diff options
author | Mattias Andrée <maandree@kth.se> | 2019-10-07 19:09:51 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2019-10-07 19:09:51 +0200 |
commit | 0a5ba369adc08a4ccafc10f3fc36bed95d7f3c58 (patch) | |
tree | 2355a9417d1a225bfcfdb0129d5eaba364ab0683 /cg-query.c | |
parent | Reorganise, change license, portable makefile, and reference radharc (diff) | |
download | cg-tools-0a5ba369adc08a4ccafc10f3fc36bed95d7f3c58.tar.gz cg-tools-0a5ba369adc08a4ccafc10f3fc36bed95d7f3c58.tar.bz2 cg-tools-0a5ba369adc08a4ccafc10f3fc36bed95d7f3c58.tar.xz |
Change coding style and fix warnings
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'cg-query.c')
-rw-r--r-- | cg-query.c | 734 |
1 files changed, 365 insertions, 369 deletions
@@ -25,19 +25,20 @@ static libcoopgamma_filter_query_t query; /** * The class of the filter to print */ -static char* class = NULL; +static char *class = NULL; /** * Print usage information and exit */ -static void usage(void) +static void +usage(void) { - fprintf(stderr, - "Usage: %s [-M method] [-S site] [-h high] [-l low] [-f class] -c crtc\n", - argv0); - exit(1); + fprintf(stderr, + "usage: %s [-M method] [-S site] [-h high] [-l low] [-f class] -c crtc\n", + argv0); + exit(1); } @@ -47,22 +48,23 @@ static void usage(void) * * @return Zero on success, -1 on error */ -static int initialise_proc(void) +static int +initialise_proc(void) { - sigset_t sigmask; - int sig; - - for (sig = 1; sig < _NSIG; sig++) - if (signal(sig, SIG_DFL) == SIG_ERR) - if (sig == SIGCHLD) - return -1; - - if (sigemptyset(&sigmask) < 0) - return -1; - if (sigprocmask(SIG_SETMASK, &sigmask, NULL) < 0) - return -1; - - return 0; + sigset_t sigmask; + int sig; + + for (sig = 1; sig < _NSIG; sig++) + if (signal(sig, SIG_DFL) == SIG_ERR) + if (sig == SIGCHLD) + return -1; + + if (sigemptyset(&sigmask) < 0) + return -1; + if (sigprocmask(SIG_SETMASK, &sigmask, NULL) < 0) + return -1; + + return 0; } @@ -72,21 +74,22 @@ static int initialise_proc(void) * * @return Zero on success, -1 on error */ -static int list_methods(void) +static int +list_methods(void) { - char** list; - size_t i; - - list = libcoopgamma_get_methods(); - if (list == NULL) - return -1; - for (i = 0; list[i]; i++) - printf("%s\n", list[i]); - free(list); - if (fflush(stdout) < 0) - return -1; - - return 0; + char **list; + size_t i; + + list = libcoopgamma_get_methods(); + if (!list) + return -1; + for (i = 0; list[i]; i++) + printf("%s\n", list[i]); + free(list); + if (fflush(stdout) < 0) + return -1; + + return 0; } @@ -99,21 +102,22 @@ static int list_methods(void) * @return Zero on success, -1 on error, -2 * on libcoopgamma error */ -static int list_crtcs(void) +static int +list_crtcs(void) { - char** list; - size_t i; - - list = libcoopgamma_get_crtcs_sync(&cg); - if (list == NULL) - return -2; - for (i = 0; list[i]; i++) - printf("%s\n", list[i]); - free(list); - if (fflush(stdout) < 0) - return -1; - - return 0; + char **list; + size_t i; + + list = libcoopgamma_get_crtcs_sync(&cg); + if (!list) + return -2; + for (i = 0; list[i]; i++) + printf("%s\n", list[i]); + free(list); + if (fflush(stdout) < 0) + return -1; + + return 0; } @@ -125,113 +129,108 @@ static int list_crtcs(void) * on libcoopgamma error, -3 on error * with error message already printed */ -static int print_info(void) +static int +print_info(void) { - libcoopgamma_crtc_info_t info; - libcoopgamma_filter_table_t table; - const char* str; - int saved_errno, ret = 0; - size_t i; - - if (libcoopgamma_crtc_info_initialise(&info) < 0) - return -1; - if (libcoopgamma_filter_table_initialise(&table) < 0) - { - saved_errno = errno; - libcoopgamma_crtc_info_destroy(&info); - errno = saved_errno; - return -1; - } - - if (libcoopgamma_get_gamma_info_sync(query.crtc, &info, &cg) < 0) - goto cg_fail; - - printf("Cooperative gamma server running: %s\n", - info.cooperative ? "yes" : "no"); - - printf("Gamma adjustments supported: %s\n", - info.supported == LIBCOOPGAMMA_MAYBE ? "maybe" : info.supported ? "yes" : "no"); - - printf("Gamma ramps stops (red green blue): %zu %zu %zu\n", - info.red_size, info.green_size, info.blue_size); - - switch (info.depth) - { - case LIBCOOPGAMMA_DOUBLE: str = "double-precision floating-point"; break; - case LIBCOOPGAMMA_FLOAT: str = "single-precision floating-point"; break; - case LIBCOOPGAMMA_UINT8: str = "unsigned 8-bit integer"; break; - case LIBCOOPGAMMA_UINT16: str = "unsigned 16-bit integer"; break; - case LIBCOOPGAMMA_UINT32: str = "unsigned 32-bit integer"; break; - case LIBCOOPGAMMA_UINT64: str = "unsigned 64-bit integer"; break; - default: - errno = EPROTO; - goto fail; - } - printf("Gamma ramps stops value type: %s\n", str); - - if (info.colourspace != LIBCOOPGAMMA_UNKNOWN) - { - switch (info.colourspace) - { - case LIBCOOPGAMMA_SRGB: str = "sRGB"; break; - case LIBCOOPGAMMA_RGB: str = "non-standard RGB"; break; - case LIBCOOPGAMMA_NON_RGB: str = "non-RGB multicolour"; break; - case LIBCOOPGAMMA_GREY: str = "monochrome or singlecolour scale"; break; + libcoopgamma_crtc_info_t info; + libcoopgamma_filter_table_t table; + const char *str; + int saved_errno, ret = 0; + size_t i; + + if (libcoopgamma_crtc_info_initialise(&info) < 0) + return -1; + if (libcoopgamma_filter_table_initialise(&table) < 0) { + saved_errno = errno; + libcoopgamma_crtc_info_destroy(&info); + errno = saved_errno; + return -1; + } + + if (libcoopgamma_get_gamma_info_sync(query.crtc, &info, &cg) < 0) + goto cg_fail; + + printf("Cooperative gamma server running: %s\n", + info.cooperative ? "yes" : "no"); + + printf("Gamma adjustments supported: %s\n", + info.supported == LIBCOOPGAMMA_MAYBE ? "maybe" : info.supported ? "yes" : "no"); + + printf("Gamma ramps stops (red green blue): %zu %zu %zu\n", + info.red_size, info.green_size, info.blue_size); + + switch (info.depth) { + case LIBCOOPGAMMA_DOUBLE: str = "double-precision floating-point"; break; + case LIBCOOPGAMMA_FLOAT: str = "single-precision floating-point"; break; + case LIBCOOPGAMMA_UINT8: str = "unsigned 8-bit integer"; break; + case LIBCOOPGAMMA_UINT16: str = "unsigned 16-bit integer"; break; + case LIBCOOPGAMMA_UINT32: str = "unsigned 32-bit integer"; break; + case LIBCOOPGAMMA_UINT64: str = "unsigned 64-bit integer"; break; default: - errno = EPROTO; - goto fail; + errno = EPROTO; + goto fail; + } + printf("Gamma ramps stops value type: %s\n", str); + + if (info.colourspace != LIBCOOPGAMMA_UNKNOWN) { + switch (info.colourspace) { + case LIBCOOPGAMMA_SRGB: str = "sRGB"; break; + case LIBCOOPGAMMA_RGB: str = "non-standard RGB"; break; + case LIBCOOPGAMMA_NON_RGB: str = "non-RGB multicolour"; break; + case LIBCOOPGAMMA_GREY: str = "monochrome or singlecolour scale"; break; + case LIBCOOPGAMMA_UNKNOWN: + default: + errno = EPROTO; + goto fail; + } + printf("Monitor's colourspace: %s\n", str); + } + + if (info.have_gamut) { + printf("Monitor's red colour (x, y): %lf, %lf\n", + info.red_x / (double)1024, info.red_y / (double)1024); + + printf("Monitor's green colour (x, y): %lf, %lf\n", + info.green_x / (double)1024, info.green_y / (double)1024); + + printf("Monitor's blue colour (x, y): %lf, %lf\n", + info.blue_x / (double)1024, info.blue_y / (double)1024); + + printf("Monitor's white point (x, y): %lf, %lf\n", + info.white_x / (double)1024, info.white_y / (double)1024); + } + + if (libcoopgamma_get_gamma_sync(&query, &table, &cg) < 0) + goto cg_fail; + + if (table.red_size != info.red_size || table.green_size != info.green_size || + table.blue_size != info.blue_size || table.depth != info.depth) { + fprintf(stderr, "%s: gamma ramp structure changed between queries\n", argv0); + goto custom_fail; + } + + printf("Filters: %zu\n", table.filter_count); + for (i = 0; i < table.filter_count; i++) { + printf(" Filter %zu:\n", i); + printf(" Priority: %" PRIi64 "\n", table.filters[i].priority); + printf(" Class: %s\n", table.filters[i].class); } - printf("Monitor's colourspace: %s\n", str); - } - - if (info.have_gamut) - { - printf("Monitor's red colour (x, y): %lf, %lf\n", - info.red_x / (double)1024, info.red_y / (double)1024); - - printf("Monitor's green colour (x, y): %lf, %lf\n", - info.green_x / (double)1024, info.green_y / (double)1024); - - printf("Monitor's blue colour (x, y): %lf, %lf\n", - info.blue_x / (double)1024, info.blue_y / (double)1024); - - printf("Monitor's white point (x, y): %lf, %lf\n", - info.white_x / (double)1024, info.white_y / (double)1024); - } - - if (libcoopgamma_get_gamma_sync(&query, &table, &cg) < 0) - goto cg_fail; - - if ((table.red_size != info.red_size) || (table.green_size != info.green_size) || - (table.blue_size != info.blue_size) || (table.depth != info.depth)) - { - fprintf(stderr, "%s: gamma ramp structure changed between queries\n", argv0); - goto custom_fail; - } - - printf("Filters: %zu\n", table.filter_count); - for (i = 0; i < table.filter_count; i++) - { - printf(" Filter %zu:\n", i); - printf(" Priority: %" PRIi64 "\n", table.filters[i].priority); - printf(" Class: %s\n", table.filters[i].class); - } - - done: - saved_errno = errno; - libcoopgamma_crtc_info_destroy(&info); - libcoopgamma_filter_table_destroy(&table); - errno = saved_errno; - return ret; - fail: - ret = -1; - goto done; - cg_fail: - ret = -2; - goto done; - custom_fail: - ret = -3; - goto done; + +done: + saved_errno = errno; + libcoopgamma_crtc_info_destroy(&info); + libcoopgamma_filter_table_destroy(&table); + errno = saved_errno; + return ret; +fail: + ret = -1; + goto done; +cg_fail: + ret = -2; + goto done; +custom_fail: + ret = -3; + goto done; } @@ -244,84 +243,85 @@ static int print_info(void) * on libcoopgamma error, -3 on error * with error message already printed */ -static int print_filter(void) +static int +print_filter(void) { - libcoopgamma_filter_table_t table; - libcoopgamma_ramps_t* restrict ramps; - int saved_errno, ret = 0; - size_t i, n; - - if (libcoopgamma_filter_table_initialise(&table) < 0) - return -1; - - if (libcoopgamma_get_gamma_sync(&query, &table, &cg) < 0) - goto cg_fail; - - if (query.coalesce) - i = 0; - else - for (i = 0; i < table.filter_count; i++) - if (!strcmp(table.filters[i].class, class)) - break; - if (i == table.filter_count) - { - fprintf(stderr, "%s: selected filter does not exist on selected CRTC\n", argv0); - goto custom_fail; - } - ramps = &(table.filters[i].ramps); - - n = table.red_size; - if (n < table.green_size) - n = table.green_size; - if (n < table.blue_size) - n = table.blue_size; - - switch (table.depth) - { -#define X(CONST, MEMBER, TYPE, FORMAT, DASH) \ - case CONST: \ - for (i = 0; i < n; i++) \ - { \ - if (i < ramps->MEMBER.red_size) \ - printf("%" FORMAT " ", (TYPE)(ramps->MEMBER.red[i])); \ - else \ - printf(DASH " "); \ - if (i < ramps->MEMBER.green_size) \ - printf("%" FORMAT " ", (TYPE)(ramps->MEMBER.green[i])); \ - else \ - printf(DASH " "); \ - if (i < ramps->MEMBER.blue_size) \ - printf("%" FORMAT "\n", (TYPE)(ramps->MEMBER.blue[i])); \ - else \ - printf(DASH "\n"); \ - } \ - break - X(LIBCOOPGAMMA_DOUBLE, d, double, "lf", "----"); - X(LIBCOOPGAMMA_FLOAT, f, double, "lf", "----"); - X(LIBCOOPGAMMA_UINT8, u8, uint8_t, "02" PRIx8, "--"); - X(LIBCOOPGAMMA_UINT16, u16, uint16_t, "04" PRIx16, "----"); - X(LIBCOOPGAMMA_UINT32, u32, uint32_t, "08" PRIx32, "--------"); - X(LIBCOOPGAMMA_UINT64, u64, uint64_t, "016" PRIx64, "----------------"); + libcoopgamma_filter_table_t table; + libcoopgamma_ramps_t *restrict ramps; + int saved_errno, ret = 0; + size_t i, n; + + if (libcoopgamma_filter_table_initialise(&table) < 0) + return -1; + + if (libcoopgamma_get_gamma_sync(&query, &table, &cg) < 0) + goto cg_fail; + + if (query.coalesce) { + i = 0; + } else { + for (i = 0; i < table.filter_count; i++) + if (!strcmp(table.filters[i].class, class)) + break; + } + if (i == table.filter_count) { + fprintf(stderr, "%s: selected filter does not exist on selected CRTC\n", argv0); + goto custom_fail; + } + ramps = &table.filters[i].ramps; + + n = table.red_size; + if (n < table.green_size) + n = table.green_size; + if (n < table.blue_size) + n = table.blue_size; + + switch (table.depth) { +#define X(CONST, MEMBER, TYPE, FORMAT, DASH)\ + case CONST:\ + for (i = 0; i < n; i++) {\ + if (i < ramps->MEMBER.red_size)\ + printf("%" FORMAT " ", (TYPE)(ramps->MEMBER.red[i]));\ + else\ + printf(DASH " ");\ + \ + if (i < ramps->MEMBER.green_size)\ + printf("%" FORMAT " ", (TYPE)(ramps->MEMBER.green[i]));\ + else\ + printf(DASH " ");\ + \ + if (i < ramps->MEMBER.blue_size)\ + printf("%" FORMAT "\n", (TYPE)(ramps->MEMBER.blue[i]));\ + else\ + printf(DASH "\n");\ + } \ + break + X(LIBCOOPGAMMA_DOUBLE, d, double, "lf", "----"); + X(LIBCOOPGAMMA_FLOAT, f, double, "lf", "----"); + X(LIBCOOPGAMMA_UINT8, u8, uint8_t, "02" PRIx8, "--"); + X(LIBCOOPGAMMA_UINT16, u16, uint16_t, "04" PRIx16, "----"); + X(LIBCOOPGAMMA_UINT32, u32, uint32_t, "08" PRIx32, "--------"); + X(LIBCOOPGAMMA_UINT64, u64, uint64_t, "016" PRIx64, "----------------"); #undef X - default: - errno = EPROTO; - goto fail; - } - - done: - saved_errno = errno; - libcoopgamma_filter_table_destroy(&table); - errno = saved_errno; - return ret; - fail: - ret = -1; - goto done; - cg_fail: - ret = -2; - goto done; - custom_fail: - ret = -3; - goto done; + default: + errno = EPROTO; + goto fail; + } + +done: + saved_errno = errno; + libcoopgamma_filter_table_destroy(&table); + errno = saved_errno; + return ret; +fail: + ret = -1; + goto done; +cg_fail: + ret = -2; + goto done; +custom_fail: + ret = -3; + goto done; } @@ -352,146 +352,142 @@ static int print_filter(void) * @param argv The command line arguments * @return 0 on success, 1 on error */ -int main(int argc, char* argv[]) +int +main(int argc, char *argv[]) { - int stage = 0, haveh = 0, havel = 0; - int rc = 0; - char* method = NULL; - char* site = NULL; - - query.high_priority = INT64_MAX; - query.low_priority = INT64_MIN; - query.crtc = NULL; - query.coalesce = 0; - - ARGBEGIN - { - case 'M': - if (method != NULL) - usage(); - method = EARGF(usage()); - break; - case 'S': - if (site != NULL) - usage(); - site = EARGF(usage()); - break; - case 'c': - if (query.crtc != NULL) - usage(); - query.crtc = EARGF(usage()); - break; - case 'h': - if (haveh++) - usage(); - query.high_priority = (int64_t)atoll(EARGF(usage())); - break; - case 'l': - if (havel++) - usage(); - query.low_priority = (int64_t)atoll(EARGF(usage())); - break; - case 'f': - if (class != NULL) - usage(); - class = EARGF(usage()); - if ((class[0] == '*') && (class[1] == '\0')) - query.coalesce = 1; - break; - default: - usage(); - } - ARGEND; - - if (argc) - usage(); - - if (initialise_proc() < 0) - goto fail; - - if ((method != NULL) && !strcmp(method, "?")) - { - if ((site != NULL) || (query.crtc != NULL)) - usage(); - if (list_methods() < 0) - goto fail; - return 0; - } - - if (libcoopgamma_context_initialise(&cg) < 0) - goto fail; - stage++; - if (libcoopgamma_connect(method, site, &cg) < 0) - { - fprintf(stderr, "%s: server failed to initialise\n", argv0); - goto custom_fail; - } - stage++; - - if (!(query.crtc)) - usage(); - - if (!strcmp(query.crtc, "?")) - switch (list_crtcs()) - { - case 0: + int stage = 0, haveh = 0, havel = 0; + int rc = 0; + char *method = NULL; + char *site = NULL; + const char *side; + + query.high_priority = INT64_MAX; + query.low_priority = INT64_MIN; + query.crtc = NULL; + query.coalesce = 0; + + ARGBEGIN { + case 'M': + if (method) + usage(); + method = EARGF(usage()); + break; + case 'S': + if (site) + usage(); + site = EARGF(usage()); + break; + case 'c': + if (query.crtc) + usage(); + query.crtc = EARGF(usage()); + break; + case 'h': + if (haveh++) + usage(); + query.high_priority = (int64_t)atoll(EARGF(usage())); + break; + case 'l': + if (havel++) + usage(); + query.low_priority = (int64_t)atoll(EARGF(usage())); + break; + case 'f': + if (class) + usage(); + class = EARGF(usage()); + if (class[0] == '*' && class[1] == '\0') + query.coalesce = 1; + break; + default: + usage(); + } + ARGEND; + + if (argc) + usage(); + + if (initialise_proc() < 0) + goto fail; + + if (method && !strcmp(method, "?")) { + if (site || query.crtc) + usage(); + if (list_methods() < 0) + goto fail; + return 0; + } + + if (libcoopgamma_context_initialise(&cg) < 0) + goto fail; + stage++; + if (libcoopgamma_connect(method, site, &cg) < 0) { + fprintf(stderr, "%s: server failed to initialise\n", argv0); + goto custom_fail; + } + stage++; + + if (!query.crtc) + usage(); + + if (!strcmp(query.crtc, "?")) { + switch (list_crtcs()) { + case 0: + goto done; + case -1: + goto fail; + default: + goto cg_fail; + } + } + + switch (class ? print_filter() : print_info()) { + case 0: + goto done; + case -1: + goto fail; + case -2: + goto cg_fail; + default: + goto custom_fail; + } + + fflush(stdout); + if (ferror(stdout)) + goto fail; + if (fclose(stdout) < 0) + goto fail; + +done: + if (stage >= 1) + libcoopgamma_context_destroy(&cg, stage >= 2); + return rc; + +custom_fail: + rc = 1; + goto done; + +fail: + rc = 1; + perror(argv0); + goto done; + +cg_fail: + rc = 1; + side = cg.error.server_side ? "server" : "client"; + if (cg.error.custom) { + if (cg.error.number || cg.error.description) { + fprintf(stderr, "%s: %s-side error number %" PRIu64 ": %s\n", + argv0, side, cg.error.number, cg.error.description); + } else if (cg.error.number) { + fprintf(stderr, "%s: %s-side error number %" PRIu64 "\n", argv0, side, cg.error.number); + } else if (cg.error.description) { + fprintf(stderr, "%s: %s-side error: %s\n", argv0, side, cg.error.description); + } + } else if (cg.error.description) { + fprintf(stderr, "%s: %s-side error: %s\n", argv0, side, cg.error.description); + } else { + fprintf(stderr, "%s: %s-side error: %s\n", argv0, side, strerror((int)cg.error.number)); + } goto done; - case -1: - goto fail; - default: - goto cg_fail; - } - - switch (class ? print_filter() : print_info()) - { - case 0: - goto done; - case -1: - goto fail; - case -2: - goto cg_fail; - default: - goto custom_fail; - } - - fflush(stdout); - if (ferror(stdout)) - goto fail; - if (fclose(stdout) < 0) - goto fail; - - done: - if (stage >= 1) - libcoopgamma_context_destroy(&cg, stage >= 2); - return rc; - - custom_fail: - rc = 1; - goto done; - - fail: - rc = 1; - perror(argv0); - goto done; - - cg_fail: - rc = 1; - { - const char* side = cg.error.server_side ? "server" : "client"; - if (cg.error.custom) - { - if ((cg.error.number != 0) || (cg.error.description != NULL)) - fprintf(stderr, "%s: %s-side error number %" PRIu64 ": %s\n", - argv0, side, cg.error.number, cg.error.description); - else if (cg.error.number != 0) - fprintf(stderr, "%s: %s-side error number %" PRIu64 "\n", argv0, side, cg.error.number); - else if (cg.error.description != NULL) - fprintf(stderr, "%s: %s-side error: %s\n", argv0, side, cg.error.description); - } - else if (cg.error.description != NULL) - fprintf(stderr, "%s: %s-side error: %s\n", argv0, side, cg.error.description); - else - fprintf(stderr, "%s: %s-side error: %s\n", argv0, side, strerror(cg.error.number)); - } - goto done; } |