diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 137 |
1 files changed, 0 insertions, 137 deletions
@@ -1,137 +0,0 @@ -/* SPDX-License-Identifier: BSD-2-Clause */ - -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <stdbool.h> - -#define CUR_PATH "/sys/class/backlight/intel_backlight/brightness" -#define MAX_PATH "/sys/class/backlight/intel_backlight/max_brightness" -#define STEP 10 - -struct brightness { - int max_raw; - int raw; - int percents; -}; - - - -int readval(const char *path, int *dst) -{ - FILE *f = fopen(path, "r"); - int retval = 1; - - if (f == NULL) { - perror(path); - goto end; - } - - int raw; - if (fscanf(f, "%d", &raw) != 1) { - perror(path); - goto end; - } - - *dst = raw; - retval = 0; - -end: - if (f != NULL) - fclose(f); - return retval; -} - - -int get(struct brightness *dst) -{ - int retval = 1; - if (readval(CUR_PATH, &dst->raw)) - goto end; - if (readval(MAX_PATH, &dst->max_raw)) - goto end; - - dst->percents = (int)round((double)dst->raw*100/dst->max_raw); - retval = 0; - -end: - return retval; -} - -int set(struct brightness *src) -{ - int retval = 1; - FILE *f = fopen(CUR_PATH, "w"); - if (!f) { - perror(CUR_PATH); - goto end; - } - - fprintf(f, "%d", src->raw); - retval = 0; - -end: - if (f != NULL) - fclose(f); - return retval; -} - -void adjust(struct brightness *b, int value) -{ - b->percents += value; - if (b->percents > 100) - b->percents = 100; - else if (b->percents < 0) - b->percents = 0; - b->raw = (int)ceil((double)b->percents*b->max_raw/100); -} - - -void dump(struct brightness *b) -{ - printf("%d (%d%%)\n", b->raw, b->percents); -} - - -int main(int argc, char** argv) -{ - int retval = 0; - struct brightness b; - int adjust_val = STEP; - bool decr = false; - - if (argc > 1 && strcmp(argv[1], "-h") == 0) { - printf("usage: %s [-h] [+/-]\n", argv[0]); - goto end; - } - - if (get(&b)) - goto end; - - if (argc <= 1) { - dump(&b); - goto end; - } - - if (strcmp(argv[1], "-") == 0) - decr = true; - else if (strcmp(argv[1], "+") != 0) { - fprintf(stderr, "%s: unknown argument\n", argv[1]); - retval = 1; - goto end; - } - - if (decr) - adjust_val *= -1; - - adjust(&b, adjust_val); - if (set(&b)) { - retval = 1; - goto end; - } - - dump(&b); - -end: - return retval; -} |