diff --git a/blink1-tool.c b/blink1-tool.c index f609ed4218f008142d5fd5fc94866061a486dc69..6ea0431d089d58696c81bf11fd6bf2e0e5b47f8d 100644 --- a/blink1-tool.c +++ b/blink1-tool.c @@ -18,6 +18,7 @@ #include <getopt.h> // for getopt_long() #include <time.h> #include <unistd.h> // getuid() +#include <sys/stat.h> // stat #include "blink1-lib.h" extern int blink1_lib_verbose; @@ -246,24 +247,30 @@ int blink1_fadeToRGBForDevices( uint16_t mils, uint8_t rr,uint8_t gg, uint8_t bb } #if __linux__ +#define UDEV_FILENAME "/etc/udev/rules.d/51-blink1.rules" void add_udev_rules() { -#define UDEVSHELLSCRIPT "\ -#/bin/bash \n\ -fn=/etc/udev/rules.d/51-blink1.rules \n\ -if [ ! -e $fn ] ; then \n\ - echo 'ATTRS{idVendor}==\"27b8\", ATTRS{idProduct}==\"01ed\", MODE:=\"666\", GROUP=\"plugdev\"' | sudo tee $fn \n\ -fi \n\ -sudo udevadm control --reload \n\ -sudo udevadm trigger \n\ -" + #define UDEV_SHELLSCRIPT "\ + #/bin/bash \n\ + fn=/etc/udev/rules.d/51-blink1.rules \n\ + if [ ! -e $fn ] ; then \n\ + echo 'ATTRS{idVendor}==\"27b8\", ATTRS{idProduct}==\"01ed\", MODE:=\"666\", GROUP=\"plugdev\"' | sudo tee $fn \n\ + fi \n\ + sudo udevadm control --reload \n\ + sudo udevadm trigger \n\ + " printf("Attempting to add udev rules.\n"); printf("'sudo' will be used. Please have your password ready\n"); - printf("Script being run:\n%s\n", UDEVSHELLSCRIPT); + printf("Script being run:\n%s\n", UDEV_SHELLSCRIPT); printf("Running script...\n"); - system(UDEVSHELLSCRIPT); + system(UDEV_SHELLSCRIPT); printf("...Done.\n"); exit(0); } +// returns 1 if file exists, 0 if it doesn't exist +int udev_file_exists() { + struct stat statbuffer; + return (stat(UDEV_FILENAME, &statbuffer) == 0 ); // file exists +} #endif // @@ -549,7 +556,9 @@ int main(int argc, char** argv) if( count == 0 ) { msg("no blink(1) devices found\n"); #if __linux__ - printf("Have you added udev rules? Try blink1-tool --add_udev_rules\n"); + if( !udev_file_exists() ) { + printf("Have you added udev rules? Try blink1-tool --add_udev_rules\n"); + } #endif exit(1); } @@ -572,7 +581,9 @@ int main(int argc, char** argv) if( dev == NULL ) { msg("cannot open blink(1), bad id or serial number\n"); #if __linux__ - printf("Have you added udev rules? Try blink1-tool --add_udev_rules\n"); + if( !udev_file_exists() ) { + printf("Have you added udev rules? Try blink1-tool --add_udev_rules\n"); + } #endif exit(1); }