Edit

kc3-lang/libxkbcommon/src/utils.h

Branch :

  • Show log

    Commit

  • Author : Ran Benita
    Date : 2012-07-20 13:10:13
    Hash : 70f35cfb
    Message : Add logging API Add new public API to provide the library users with some options to control and customize the logging output from the library. It is based upon the skeleton from the libabc demo libray: https://git.kernel.org/?p=linux/kernel/git/kay/libabc.git which is public domain and works pretty well. This requires passing in the context object in every logging call, and thus the conversion is done file by file. We also remove the global warningLevel variable in favor of a verbosity level in the context, which can be set by the user and is silent by default. One issue is the ACTION calls, which, while nice, do not play very well with line- and priority-based logging, and would require some line continuation handling or keeping state or some other compromise. So instead remove these and just inline them with their respective warning/error. So instead of: ERROR("Memory allocation failed\n") ACTION("Removing all files on hardisk\n") its something like that: log_err("Memory allocation failed; Removing all files on harddisk\n") Signed-off-by: Ran Benita <ran234@gmail.com>

  • src/utils.h
  • #ifndef UTILS_H
    #define UTILS_H 1
    
    /*\
     *
     *                          COPYRIGHT 1990
     *                    DIGITAL EQUIPMENT CORPORATION
     *                       MAYNARD, MASSACHUSETTS
     *                        ALL RIGHTS RESERVED.
     *
     * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
     * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
     * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
     * FOR ANY PURPOSE.  IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
     * WARRANTY.
     *
     * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
     * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
     * ADDITION TO THAT SET FORTH ABOVE.
     *
     * Permission to use, copy, modify, and distribute this software and its
     * documentation for any purpose and without fee is hereby granted, provided
     * that the above copyright notice appear in all copies and that both that
     * copyright notice and this permission notice appear in supporting
     * documentation, and that the name of Digital Equipment Corporation not be
     * used in advertising or publicity pertaining to distribution of the
     * software without specific, written prior permission.
     \*/
    
    /***====================================================================***/
    
    /*
     * We sometimes malloc strings and then expose them as const char*'s. This
     * macro is used when we free these strings in order to avoid -Wcast-qual
     * errors.
     */
    #define UNCONSTIFY(const_ptr)  ((void *) (uintptr_t) (const_ptr))
    
    #define uDupString(s)          ((s) ? strdup(s) : NULL)
    #define uStringText(s)         ((s) == NULL ? "<NullString>" : (s))
    #define uStrCasePrefix(s1, s2) (strncasecmp((s1), (s2), strlen(s1)) == 0)
    
    /* Compiler Attributes */
    
    #if defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__CYGWIN__)
    # define XKB_EXPORT      __attribute__((visibility("default")))
    #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
    # define XKB_EXPORT      __global
    #else /* not gcc >= 4 and not Sun Studio >= 8 */
    # define XKB_EXPORT
    #endif
    
    #if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 203)
    # define ATTR_PRINTF(x,y) __attribute__((__format__(__printf__, x, y)))
    #else /* not gcc >= 2.3 */
    # define ATTR_PRINTF(x,y)
    #endif
    
    #if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 205)) \
        || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
    # define ATTR_NORETURN __attribute__((__noreturn__))
    #else
    # define ATTR_NORETURN
    #endif /* GNUC  */
    
    #if (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 296)
    #define ATTR_MALLOC  __attribute__((__malloc__))
    #else
    #define ATTR_MALLOC
    #endif
    
    #define INFO(...) xkb_log(NULL, LOG_INFO, __VA_ARGS__)
    #define WARN(...) xkb_log(NULL, LOG_WARNING, __VA_ARGS__)
    #define ERROR(...) xkb_log(NULL, LOG_ERR, __VA_ARGS__)
    #define WSGO(...) xkb_log(NULL, LOG_CRIT, __VA_ARGS__)
    #define ACTION(...) xkb_log(NULL, -1, __VA_ARGS__)
    
    #endif /* UTILS_H */