Make the __FILE__ and __LINE__ part of the log message.
[apple-ir-control.git] / apple-ir-control.cc
index 337a457221fa705f246e7e654be9044f97cd700a..5a56489d56eace4d323873284ba145cd141d0523 100644 (file)
@@ -17,17 +17,20 @@ const CFStringRef kPrefDomain = CFSTR("com.apple.driver.AppleIRController");
 const CFStringRef kPrefEnabled = CFSTR("DeviceEnabled");
 
 #if NDEBUG
-bool VERBOSE = false;
+const bool VERBOSE = false;
 #else
-bool VERBOSE = true;
+const bool VERBOSE = true;
 #endif
 
+#define LOCATION_LINE(x) #x
+#define LOCATION(line) __FILE__ ":" LOCATION_LINE(line)
+
 #define LOG(msg, ...) do { \
     if (VERBOSE) { \
-      printf(msg "   [%s:%d]\n", ##__VA_ARGS__, __FILE__, __LINE__); \
+      printf("[" LOCATION(__LINE__) "] " msg "\n", ##__VA_ARGS__); \
     } \
   } while(0)
-#define ERROR(msg, ...) fprintf(stderr, msg "   [%s:%d]\n", ##__VA_ARGS__, __FILE__, __LINE__)
+#define ERROR(msg, ...) fprintf(stderr, "[" LOCATION(__LINE__) "] " msg "\n", ##__VA_ARGS__)
 
 class ScopedIOHIDManager {
  public:
@@ -104,23 +107,22 @@ const char* GetBooleanDescription(CFTypeRef boolean) {
 
 bool SynchronizePrefs() {
   bool rv = CFPreferencesSynchronize(kPrefDomain, kCFPreferencesAnyUser,
-          kCFPreferencesCurrentHost);
+      kCFPreferencesCurrentHost);
   if (!rv) {
     ERROR("Failed to CFPreferencesSynchronize");
   }
   return rv;
 }
 
-io_iterator_t CreateIOServiceIterator() {
+bool CreateIOServiceIterator(io_iterator_t* iterator) {
   CFMutableDictionaryRef matching_dict = IOServiceMatching("AppleIRController");
-  io_iterator_t iterator;
   kern_return_t kr = IOServiceGetMatchingServices(
-      kIOMasterPortDefault, matching_dict, &iterator);
+      kIOMasterPortDefault, matching_dict, iterator);
   if (kr != KERN_SUCCESS) {
     ERROR("Failed to IOServiceGetMatchingServices: 0x%x", kr);
-    return 0;
+    return false;
   }
-  return iterator;
+  return true;;
 }
 
 int HandleRead() {
@@ -128,8 +130,8 @@ int HandleRead() {
       kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
   printf("Userspace property value: %s\n", GetBooleanDescription(user_prop));
 
-  io_iterator_t iterator = CreateIOServiceIterator();
-  if (!iterator)
+  io_iterator_t iterator;
+  if (!CreateIOServiceIterator(&iterator))
     return EXIT_FAILURE;
 
   io_object_t service;
@@ -153,7 +155,7 @@ int HandleRead() {
   }
 
   if (!did_find) {
-    ERROR("Failed to match AppleIRController");
+    ERROR("Failed to match any AppleIRController");
     return EXIT_FAILURE;
   }
 
@@ -173,7 +175,10 @@ int HandleWrite(bool enable) {
   if (!SynchronizePrefs())
     return EXIT_FAILURE;
 
-  io_iterator_t iterator = CreateIOServiceIterator();
+  io_iterator_t iterator;
+  if (!CreateIOServiceIterator(&iterator))
+    return EXIT_FAILURE;
+
   io_object_t service;
   while ((service = IOIteratorNext(iterator))) {
     io_name_t name;