Пример #1
0
void Logger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, ErrorType p_type) {
	if (!should_log(true)) {
		return;
	}

	const char *err_type = "**ERROR**";
	switch (p_type) {
		case ERR_ERROR: err_type = "**ERROR**"; break;
		case ERR_WARNING: err_type = "**WARNING**"; break;
		case ERR_SCRIPT: err_type = "**SCRIPT ERROR**"; break;
		case ERR_SHADER: err_type = "**SHADER ERROR**"; break;
		default: ERR_PRINT("Unknown error type"); break;
	}

	const char *err_details;
	if (p_rationale && *p_rationale)
		err_details = p_rationale;
	else
		err_details = p_code;

	logf_error("%s: %s\n", err_type, err_details);
	logf_error("   At: %s:%i:%s() - %s\n", p_file, p_line, p_function, p_code);
}
/*
 * Triggers logging functions to be tested, which are
 * given due to logf.h and macro.h
 */
int
main(int argc, char **argv)
{
/*
	logf_register(&logf_file_write, stdout);
	logf_register(&logf_file_write, stderr);
	logf_register(&logf_file_write, fopen("log.cmld", "a"));
	logf_register(&logf_file_write, logf_file_new("log.cmld"));
	logf_register(&logf_syslog_write, logf_syslog_new("trustme-cmld"));
	logf_register(&logf_android_write, logf_android_new("trustme-cmld"));
	logf_register(&logf_klog_write, logf_klog_new("trustme-cmld"));

	logf_debug("debug test");
	logf_info("info test");
	logf_warn("warn test");
	logf_error("error test");

	logf_debug_errno("debug errno test");
	errno = 1;
	logf_info_errno("info errno test");
	errno = 2;
	logf_warn_errno("warn errno test");
	errno = 3;
	logf_error_errno("error errno test");

	return 0;
*/
	logf_register(&logf_test_write, stdout);
	DEBUG("Unit Test: logf.test.c");

	DEBUG("Test logf_register and logD");
	logf_register(&logf_test_write, stderr);

	DEBUG("Test logf_debug");
	logf_debug("debug test");

	DEBUG("Test logf_info");
	logf_info("info test");

	DEBUG("Test logf_warn");
	logf_warn("warn test");

	DEBUG("Test logf_error");
	logf_error("error test");

	DEBUG("Test logf_debug_errno");
	logf_debug_errno("debug errno test");
	errno = 1;

	DEBUG("Test logf_info_errno");
	logf_info_errno("info errno test");
	errno = 2;

	DEBUG("Test logf_warn_errno");
	logf_warn_errno("warn errno test");
	errno = 3;

	DEBUG("Test logf_error_errno");
	logf_error_errno("error errno test");

	return 0;
}
Пример #3
0
result_t MMMaker_make(const char **sourceMaskDirs,
                      int          nSourceMaskDirs,
                      const char  *filename)
{
#define MAX_FILENAMES 500

  result_t           err;
  char             **sourceMaskFilenames;
  int                nSourceMaskFilenames = 0;
  char              *sourceMaskFilenamesBuffer = NULL;
  motionmaskmaker_t *maker = NULL;
  int                i;
  CGImageRef         makerSource[MAX_FILENAMES];
  CGBitmapInfo       bitmapInfo;
  pixelfmt_t         pixelfmt;
  bitmap_set_t       makerBitmaps;
  CFDataRef          pixels[MAX_FILENAMES];
  void              *makerBitmapBases[MAX_FILENAMES];

  err = findfilesbyregexp(sourceMaskDirs,
                          nSourceMaskDirs,
                          ".*\\.png",
                          &sourceMaskFilenames,
                          &nSourceMaskFilenames,
                          &sourceMaskFilenamesBuffer);
  if (err)
    goto failure;

  if (nSourceMaskFilenames <= 0 || nSourceMaskFilenames > MAX_FILENAMES)
  {
    err = result_TOO_BIG;
    goto failure;
  }

  for (i = 0; i < nSourceMaskFilenames; i++)
    pixels[i] = NULL;

  err = motionmaskmaker_create(&maker);
  if (err)
    goto failure;

  for (i = 0; i < nSourceMaskFilenames; i++)
  {
    logf_info("sourcing mask %d from %s", i, sourceMaskFilenames[i]);

    makerSource[i] = createCGImageFromPNGFile(sourceMaskFilenames[i]);

    bitmapInfo = CGImageGetBitmapInfo(makerSource[i]);
    pixelfmt = bitmapInfoToPixelfmt(bitmapInfo);
    if (pixelfmt == pixelfmt_unknown)
    {
      logf_error("MMMaker_make: Unknown pixelfmt.");
      return result_BAD_ARG;
    }

    // bodge pixelfmt to be something we can currently cope with

    if (pixelfmt == pixelfmt_rgba8888)
      pixelfmt = pixelfmt_rgbx8888;
    if (pixelfmt == pixelfmt_abgr8888)
      pixelfmt = pixelfmt_xbgr8888;

    // turn the image into greyscale if it's anything else

    if (pixelfmt != pixelfmt_y8)
    {
      CGImageRef greyCopy;

      greyCopy = BitmapTransform_createGreyscaleCopy(makerSource[i]);

      CGImageRelease(makerSource[i]);

      makerSource[i] = greyCopy;

      bitmapInfo = CGImageGetBitmapInfo(makerSource[i]);
      pixelfmt = bitmapInfoToPixelfmt(bitmapInfo);
      if (pixelfmt == pixelfmt_unknown)
        return result_BAD_ARG;
    }

    pixels[i] = copyImagePixels(makerSource[i]);
    if (pixels[i] == NULL)
      goto failure;

    makerBitmapBases[i] = (void *) CFDataGetBytePtr(pixels[i]);
  }

  makerBitmaps.width    = (int) CGImageGetWidth(makerSource[0]);
  makerBitmaps.height   = (int) CGImageGetHeight(makerSource[0]);
  makerBitmaps.format   = pixelfmt;
  makerBitmaps.rowbytes = (int) CGImageGetBytesPerRow(makerSource[0]);
  makerBitmaps.nbases   = nSourceMaskFilenames;
  makerBitmaps.bases    = makerBitmapBases;

  err = motionmaskmaker_pack(maker, &makerBitmaps);
  if (err)
    goto failure;

  err = motionmaskmaker_save(maker, filename);
  if (err)
    goto failure;

  /* cleanup */

failure:

  for (i = 0; i < nSourceMaskFilenames; i++)
    if (pixels[i])
      CFRelease(pixels[i]);

  motionmaskmaker_destroy(maker);
  maker = NULL;

  free(sourceMaskFilenamesBuffer);
  free(sourceMaskFilenames);

  return err;
}