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; }
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; }