text: #include<sys/stat.h>
  #include<stdlib.h>
  #include<stdio.h>
  #include<stdarg.h>
  #include<CL/cl.h>
  #include<platform/icd_test_log.h>
  
  #define APP_LOG_FILE  "icd_test_app_log.txt"
  #define STUB_LOG_FILE "icd_test_stub_log.txt"
  
  static FILE *app_log_file;
  static FILE *stub_log_file;
  
  int test_icd_initialize_app_log(void)
  {
      app_log_file = fopen(APP_LOG_FILE, "w");
      if (!app_log_file) {
  		printf("Unable to open file %s\n", APP_LOG_FILE);
          return -1;
      }
      
      return 0;
  }
  
  void test_icd_close_app_log(void)
  {
      fclose(app_log_file);
  }
  
  void test_icd_app_log(const char *format, ...)
  {
      va_list args;
      va_start(args, format);
      vfprintf(app_log_file, format, args);
      va_end(args);
  }
  
  int test_icd_initialize_stub_log(void)
  {
     	stub_log_file = fopen(STUB_LOG_FILE, "w");
      if (!stub_log_file) {
  		printf("Unable to open file %s\n", STUB_LOG_FILE);
          return -1;
      }
      
      return 0;
  
  }
  
  void test_icd_close_stub_log(void)
  {
      fclose(stub_log_file);
  }
  
  void test_icd_stub_log(const char *format, ...)
  {
      va_list args;
      va_start(args, format);
      vfprintf(stub_log_file, format, args);
      va_end(args);
  }
  
  static char *test_icd_get_log(const char *filename)
  {
      struct stat statbuf;
      FILE *fp;
      char *source = NULL;
  
      fp = fopen(filename, "rb");
  
      if (fp) {
          size_t fsize = 0;
          stat(filename, &statbuf);
          fsize = statbuf.st_size;
          source = (char *)malloc(fsize+1); // +1 for NULL terminator
          if (source) {
              if (fsize) {
                  if (fread(source, fsize, 1, fp) != 1) {
                      free(source);
                      source = NULL;
                  } else {
                      source[fsize] = '\0';
                  }
              } else {
                  // Don't fail when fsize = 0, just return empty string
                  source[fsize] = '\0';
              }
          }
          fclose(fp);
      }
  
      return source;
  }
  
  char *test_icd_get_app_log(void)
  {
      return test_icd_get_log(APP_LOG_FILE);
  }
  
  char *test_icd_get_stub_log(void)
  {
      return test_icd_get_log(STUB_LOG_FILE);
  }
  