Code Search for Developers
 
 
  

mp_msg.c from The Open2x Project at Krugle


Show mp_msg.c syntax highlighted


//#define MSG_USE_COLORS

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

#include "config.h"

#if	defined(FOR_MENCODER) || defined(CODECS2HTML)
#    undef	ENABLE_GUI_CODE
#elif	defined(HAVE_NEW_GUI)
#    define	ENABLE_GUI_CODE	HAVE_NEW_GUI
#else
#    undef	ENABLE_GUI_CODE
#endif

#if ENABLE_GUI_CODE
#    include "Gui/mplayer/widgets.h"
extern void     gtkMessageBox(int type, char *str);
extern int      use_gui;
#endif
#include "mp_msg.h"

/* maximum message length of mp_msg */
#define MSGSIZE_MAX 3072

static int      mp_msg_levels[MSGT_MAX];    // verbose level of this module

#if 1

void
mp_msg_init()
{
#    ifdef USE_I18N
#        ifdef MP_DEBUG
    fprintf(stdout, "Using GNU internationalization\n");
    fprintf(stdout, "Original domain: %s\n", textdomain(NULL));
    fprintf(stdout, "Original dirname: %s\n", bindtextdomain(textdomain(NULL), NULL));
#        endif
    setlocale(LC_ALL, "");      /* set from the environment variables */
    bindtextdomain("mplayer", PREFIX "/share/locale");
    textdomain("mplayer");
#        ifdef MP_DEBUG
    fprintf(stdout, "Current domain: %s\n", textdomain(NULL));
    fprintf(stdout, "Current dirname: %s\n\n", bindtextdomain(textdomain(NULL), NULL));
#        endif
#    endif
    mp_msg_set_level(MSGL_STATUS);
}

void
mp_msg_set_level(int verbose)
{
    int             i;

    for (i = 0; i < MSGT_MAX; i++)
    {
        mp_msg_levels[i] = verbose;
    }
}

int
mp_msg_test(int mod, int lev)
{
    return lev <= mp_msg_levels[mod];
}

void
mp_msg_c(int x, const char *format, ...)
{
#    if 1
    va_list         va;
    char            tmp[MSGSIZE_MAX];

    if ((x & 255) > mp_msg_levels[x >> 8])
        return;                 // do not display
    va_start(va, format);
    vsnprintf(tmp, MSGSIZE_MAX, mp_gettext(format), va);
    va_end(va);
    tmp[MSGSIZE_MAX - 2] = '\n';
    tmp[MSGSIZE_MAX - 1] = 0;

#        if ENABLE_GUI_CODE
    if (use_gui)
    {
        switch (x & 255)
        {
        case MSGL_FATAL:
            gtkMessageBox(GTK_MB_FATAL | GTK_MB_SIMPLE, tmp);
            break;
        case MSGL_ERR:
            gtkMessageBox(GTK_MB_ERROR | GTK_MB_SIMPLE, tmp);
            break;
#            if 0
// WARNING! Do NOT enable this! There are too many non-critical messages with
// MSGL_WARN, for example: broken SPU packets, codec's bit error messages,
// etc etc, they should not raise up a new window every time.
        case MSGL_WARN:
            gtkMessageBox(GTK_MB_WARNING | GTK_MB_SIMPLE, tmp);
            break;
#            endif
        }
    }
#        endif

#        ifdef MSG_USE_COLORS
/* that's only a silly color test */
#            ifdef MP_DEBUG
    {
        int             c;
        static int      flag = 1;

        if (flag)
            for (c = 0; c < 16; c++)
                printf("\033[%d;3%dm***  COLOR TEST %d  ***\n", (c > 7), c & 7, c);
        flag = 0;
    }
#            endif
    {
        unsigned char   v_colors[10] = { 9, 9, 11, 14, 15, 7, 6, 5, 5, 5 };
        int             c = v_colors[(x & 255)];

        fprintf(((x & 255) <= MSGL_WARN) ? stderr : stdout, "\033[%d;3%dm", (c > 7), c & 7);
    }
#        endif
    if ((x & 255) <= MSGL_WARN)
    {
        fprintf(stderr, "%s", tmp);
        fflush(stderr);
    }
    else
    {
        printf("%s", tmp);
        fflush(stdout);
    }

#    else
    va_list         va;

    if ((x & 255) > mp_msg_levels[x >> 8])
        return;                 // do not display
    va_start(va, format);
#        if ENABLE_GUI_CODE
    if (use_gui)
    {
        char            tmp[16 * 80];

        vsnprintf(tmp, 8 * 80, format, va);
        tmp[8 * 80 - 1] = 0;
        switch (x & 255)
        {
        case MSGL_FATAL:
            fprintf(stderr, "%s", tmp);
            fflush(stderr);
            gtkMessageBox(GTK_MB_FATAL | GTK_MB_SIMPLE, tmp);
            break;
        case MSGL_ERR:
            fprintf(stderr, "%s", tmp);
            fflush(stderr);
            gtkMessageBox(GTK_MB_ERROR | GTK_MB_SIMPLE, tmp);
            break;
        case MSGL_WARN:
            fprintf(stderr, "%s", tmp);
            fflush(stdout);
            gtkMessageBox(GTK_MB_WARNING | GTK_MB_SIMPLE, tmp);
            break;
        default:
            fprintf(stderr, "%s", tmp);
            fflush(stdout);
        }
    }
    else
#        endif
    if ((x & 255) <= MSGL_ERR)
    {
//    fprintf(stderr,"%%%%%% ");
        vfprintf(stderr, format, va);
        fflush(stderr);
    }
    else
    {
//  printf("%%%%%% ");
        vfprintf(stderr, format, va);
        fflush(stdout);
    }
    va_end(va);
#    endif
}

#else

FILE           *mp_msg_file[MSGT_MAX];  // print message to this file (can be stdout/err)
static FILE    *mp_msg_last_file = NULL;

// how to handle errors->stderr messages->stdout  ?
void mp_msg(int x, const char *format, ...)
{
    if ((x & 255) > mp_msg_levels[x >> 8] || !mp_msg_file[x >> 8])
        return;                 // do not display
    va_list         va;

    va_start(va, format);
    vfprintf(mp_msg_file[x >> 8], format, va);
    if (mp_msg_last_file != mp_msg_file[x >> 8])
    {
        fflush(mp_msg_file[x >> 8]);
        mp_msg_last_file = mp_msg_file[x >> 8];
    }
    va_end(va);
}

#endif




See more files for this project here

The Open2x Project

The Open2x project exists to provide an open source resource for the GP2X handheld console based on the MagicEyes MMSP2 processing platform and MP2520F SoC. The project hosts Linux kernel source for the GP2X, boot loader (U-Boot) source and more.

Project homepage: http://www.distant-earth.com/open2x
Programming language(s): Assembly,C,C++
License: other

  default_skin/
    asf.png
    avi.png
    body.png
    dat.png
    downarrow.png
    error.png
    ext.png
    ext_on.png
    folder.png
    full.png
    loading.png
    mpg.png
    nand.png
    nand_on.png
    normal.png
    resume.png
    save.png
    sd.png
    sd_on.png
    selectbar.png
    uparrow.png
    wmv.png
  etc/
    codecs.conf
    dvb-menu.conf
    example.conf
    input.conf
    inttypes.h
    menu.conf
    mplayer.desktop
    mplayer.ico
  fbdisp/
    Makefile
    fblin16.c
    fblin24.c
    fblin32.c
    fbs.h
    fontdisp.h
    fontout.c
    gfxdev.h
    gfxfontext.c
    gfxfontload.c
    gfxfontout.c
    gfxtype.h
    gulim_96_10_eng.c
    gulim_96_10_han.c
    main.c
    scr_fb.c
  help/
    help_diff.sh
    help_mp-bg.h
    help_mp-cs.h
    help_mp-de.h
    help_mp-dk.h
    help_mp-el.h
    help_mp-en.h
    help_mp-es.h
    help_mp-fr.h
    help_mp-hu.h
    help_mp-it.h
    help_mp-ja.h
    help_mp-ko.h
    help_mp-mk.h
    help_mp-nl.h
    help_mp-no.h
    help_mp-pl.h
    help_mp-pt_BR.h
    help_mp-ro.h
    help_mp-ru.h
  libaf/
  libao2/
  libmpcodecs/
  libmpdemux/
  loader/
  osdep/
  AUTHORS
  DirDisplay.c
  DirDisplay.h
  DirList.c
  DirList.h
  FontDisplay.c
  FontDisplay.h
  LICENSE
  Makefile
  bswap.h
  codec-cfg.c
  codec-cfg.h
  config.h
  config.mak
  csource.lst
  cx25874.h
  drawcontrol.c
  drawcontrol.h
  dualcpu.h
  filelistview.c
  filelistview.h
  find_sub.c
  g2player.h
  get_path.c
  glock.c
  glock.h
  guictrl.c
  guictrl.h
  gv.c
  gvlib_export.h
  help_mp.h
  i2c.h
  imgNumber.h
  imgbinary.h
  m_config.c
  m_config.h
  m_option.c
  m_option.h
  m_struct.c
  m_struct.h
  mangle.h
  mixer.c
  mixer.h
  mmsp2_940_if.c
  mmsp2_if.h
  mp_msg.c
  mp_msg.h
  mplayer.c
  mplayer.h
  open2x-mplayer.sh
  rtc_1024_table.h
  subdisp.c
  subdisp.h
  subreader.c
  subreader.h
  typed.h
  version.h
  vpp.h
  vpts_q.c
  wincetype.h