diff --git a/CMakeLists.txt b/CMakeLists.txt
index efacd6d..3f78a1f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ include(CMakeDependentOption)
cmake_minimum_required(VERSION 3.0.2)
project(rexbacklight)
set(rexbacklight_VERSION_MAJOR 1)
-set(rexbacklight_VERSION_MINOR 0)
+set(rexbacklight_VERSION_MINOR 1)
set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include)
configure_file(
"${INCLUDE_PATH}/config.h.in"
@@ -12,6 +12,7 @@ include_directories("${INCLUDE_PATH}")
option(BUILD_REXLEDCTL "Build led control program" ON)
option(BUILD_REXBACKLIGHT "Build backlight control program" ON)
+option(XBACKLIGHT_COMPAT "Use xbacklight style options (eg -get -inc -dec)" OFF)
CMAKE_DEPENDENT_OPTION(INSTALL_UDEV_LED_RULE "Install the udev rule to allow users of video group to control led devices" ON
"BUILD_REXLEDCTL" OFF)
CMAKE_DEPENDENT_OPTION(INSTALL_UDEV_BACKLIGHT_RULE "Install the udev rule to allow users of video group to control backlight devices" ON
@@ -19,6 +20,10 @@ CMAKE_DEPENDENT_OPTION(INSTALL_UDEV_BACKLIGHT_RULE "Install the udev rule to all
set(UDEV_DIR "/etc/udev/rules.d" CACHE STRING "Set the output directory for udev rules")
mark_as_advanced(UDEV_DIR)
+if(XBACKLIGHT_COMPAT)
+ add_definitions(-DXBACKLIGHT_COMPAT_OPTIONS)
+endif()
+
if(BUILD_REXLEDCTL)
add_executable (rexledctl src/rexbacklight.c src/cmd.c src/common.c)
target_compile_definitions(rexledctl PRIVATE REXLEDCTL)
diff --git a/TODO b/TODO
index c778b0c..a68f109 100644
--- a/TODO
+++ b/TODO
@@ -1,7 +1,7 @@
#Individual device control
#List devices
#Query backlight percentage (get)
-xbacklight compat option (-get/-set/-inc/-dec/-help/-time/-steps)
+#xbacklight compat option (-get/-set/-inc/-dec/-help/-time/-steps)
#allow fade in and fade out
a lot of cleanup
#rename "backlight" things to "device" things because led/backlight ambiguity
diff --git a/include/config.h.in b/include/config.h.in
index 71642d7..daf9778 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -1,2 +1,26 @@
-#define REXBACKLIGHT_VERSION_MAJOR 1
-#define REXBACKLIGHT_VERSION_MINOR 0
+/**
+ rexbacklight
+ Copyright (C) 2018 rexy712
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#define REXBACKLIGHT_VERSION_MAJOR @rexbacklight_VERSION_MAJOR@
+#define REXBACKLIGHT_VERSION_MINOR @rexbacklight_VERSION_MINOR@
+
+#endif
+
diff --git a/src/cmd.c b/src/cmd.c
index 533c03c..adf8d6e 100644
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -40,19 +40,61 @@
#define HELP_SHORT_OPT "-h"
#define VERSION_LONG_OPT "--version"
+#define DEVICE_XBACK_OPT "-display"
+#define HELP_XBACK_OPT "-help"
+#define VERSION_XBACK_OPT "-version"
+#define SET_XBACK_OPT "-set"
+#define INC_XBACK_OPT "-inc"
+#define DEC_XBACK_OPT "-dec"
+#define GET_XBACK_OPT "-get"
+#define FADE_XBACK_OPT "-time"
+#define STEPS_XBACK_OPT "-steps"
+
+#define DEVICE_DESC "select which device to control"
+#define FADE_DESC "change brightness over time interval"
+#define STEPS_DESC "number of steps over which to fade"
+#define GET_DESC "print current brightness level to stdout"
+#define LIST_DESC "print device names to stdout and exit"
+#define HELP_DESC "print this help message and exit"
+#define VERSION_DESC "print program version and exit"
+#define SET_DESC "set backlight device to specified value"
+#define INC_DESC "increase backlight device by specified value"
+#define DEC_DESC "decrease backlight device by specified value"
+
+#ifdef XBACKLIGHT_COMPAT_OPTIONS
+#define CHECK_SHORT_OPTION(opt, arg) assert(0)
+#define CHECK_LONG_OPTION(opt, arg) (!strcmp(opt##_XBACK_OPT, arg))
+#define CHECK_OPTION(opt, arg) (!strcmp(opt##_XBACK_OPT, arg))
+
+struct cmd_arg rexbacklight_args[] = {
+ {DEVICE_XBACK_OPT, NO_OPT, DEVICE_DESC},
+ {SET_XBACK_OPT, NO_OPT, SET_DESC},
+ {INC_XBACK_OPT, NO_OPT, INC_DESC},
+ {DEC_XBACK_OPT, NO_OPT, DEC_DESC},
+ {FADE_XBACK_OPT, NO_OPT, FADE_DESC},
+ {STEPS_XBACK_OPT, NO_OPT, STEPS_DESC},
+ {GET_XBACK_OPT, NO_OPT, GET_DESC},
+ {HELP_XBACK_OPT, NO_OPT, HELP_DESC},
+ {VERSION_XBACK_OPT, NO_OPT, VERSION_DESC}
+};
+
+#else //XBACKLIGHT_COMPAT_OPTIONS
#define CHECK_SHORT_OPTION(opt, arg) (!strcmp(opt##_SHORT_OPT, arg))
#define CHECK_LONG_OPTION(opt, arg) (!strcmp(opt##_LONG_OPT, arg))
#define CHECK_OPTION(opt, arg) (!strcmp(opt##_LONG_OPT, arg) || !strcmp(opt##_SHORT_OPT, arg))
struct cmd_arg rexbacklight_args[] = {
- {DEVICE_LONG_OPT, DEVICE_SHORT_OPT, "select which device to control"},
- {FADE_LONG_OPT, FADE_SHORT_OPT, "change brightness over time interval"},
- {STEPS_LONG_OPT, STEPS_SHORT_OPT, "number of steps over which to fade"},
- {GET_LONG_OPT, GET_SHORT_OPT, "print current brightness level to stdout"},
- {LIST_LONG_OPT, LIST_SHORT_OPT, "print device names to stdout and exit"},
- {HELP_LONG_OPT, HELP_SHORT_OPT, "print this help message and exit"},
- {VERSION_LONG_OPT, NO_OPT, "print program version and exit"}
+ {DEVICE_LONG_OPT, DEVICE_SHORT_OPT, DEVICE_DESC},
+ {FADE_LONG_OPT, FADE_SHORT_OPT, FADE_DESC},
+ {STEPS_LONG_OPT, STEPS_SHORT_OPT, STEPS_DESC},
+ {GET_LONG_OPT, GET_SHORT_OPT, GET_DESC},
+ {LIST_LONG_OPT, LIST_SHORT_OPT, LIST_DESC},
+ {HELP_LONG_OPT, HELP_SHORT_OPT, HELP_DESC},
+ {VERSION_LONG_OPT, NO_OPT, VERSION_DESC}
};
+#endif //XBACKLIGHT_COMPAT_OPTIONS
+
+
int rexbacklight_args_length = sizeof(rexbacklight_args) / sizeof(rexbacklight_args[0]);
//Clean up a cmd_arg struct
@@ -124,12 +166,7 @@ struct arg_values process_cmd_args(int argc, char** argv){
curr->device = argv[++i];
continue;
}
- else if(CHECK_OPTION(LIST, argv[i])){
- free_cmd_args(&ret);
- ret.operation = OP_LIST;
- ret.next = NULL;
- return ret;
- }
+
else if(CHECK_OPTION(HELP, argv[i])){
free_cmd_args(&ret);
return (struct arg_values){.operation = OP_USAGE};
@@ -139,6 +176,13 @@ struct arg_values process_cmd_args(int argc, char** argv){
return (struct arg_values){.operation = OP_VERSION};
}
+#ifndef XBACKLIGHT_COMPAT_OPTIONS
+ else if(CHECK_OPTION(LIST, argv[i])){
+ free_cmd_args(&ret);
+ ret.operation = OP_LIST;
+ ret.next = NULL;
+ return ret;
+ }
else if(!strcmp(argv[i], "max")){
curr->operation = OP_SET;
curr->delta = 100;
@@ -151,6 +195,25 @@ struct arg_values process_cmd_args(int argc, char** argv){
curr->operation = OP_SET;
curr->delta = 0;
}
+#else //XBACKLIGHT_COMPAT_OPTIONS
+ else if(CHECK_OPTION(SET, argv[i])){
+ CHECK_NEXT_ARG();
+ curr->operation = OP_SET;
+ curr->delta = atof(argv[++i]);
+ }
+
+ else if(CHECK_OPTION(INC, argv[i])){
+ CHECK_NEXT_ARG();
+ curr->operation = OP_INC;
+ curr->delta = atof(argv[++i]);
+ }
+
+ else if(CHECK_OPTION(DEC, argv[i])){
+ CHECK_NEXT_ARG();
+ curr->operation = OP_DEC;
+ curr->delta = atof(argv[++i]);
+ }
+#endif //XBACKLIGHT_COMPAT_OPTIONS
else if(argv[i][0] == '='){
curr->operation = OP_SET;
diff --git a/src/common.c b/src/common.c
index 9db9d3d..d91deca 100644
--- a/src/common.c
+++ b/src/common.c
@@ -57,9 +57,11 @@ _Noreturn void usage(int exit_val){
printf(" =\n");
printf(" -\n");
printf(" +\n");
+#ifndef XBACKLIGHT_COMPAT_OPTIONS
printf(" off\n");
printf(" max\n");
printf(" min\n");
+#endif //XBACKLIGHT_COMPAT_OPTIONS
printf("\n%s Copyright (C) 2018 rexy712\n", executable_name);
printf("This program comes with ABSOLUTELY NO WARRANTY.\n");