mirror of
http://mpg123.de/trunk/.git
synced 2025-08-07 21:02:55 +03:00
C99-style debuggin!
git-svn-id: svn://scm.orgis.org/mpg123/trunk@4422 35dc7657-300d-0410-a2e5-dc2837fedb53
This commit is contained in:
@@ -1,85 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
# debugdef.pl: avoid variadic debugging macros through automatic definitions
|
|
||||||
|
|
||||||
# written by Thomas Orgis <thomas@orgis.org>, placed in the public domain
|
|
||||||
|
|
||||||
my $num = shift(@ARGV);
|
|
||||||
|
|
||||||
print <<EOT;
|
|
||||||
/*
|
|
||||||
debug.h:
|
|
||||||
if DEBUG defined: debugging macro fprintf wrappers
|
|
||||||
else: macros defined to do nothing
|
|
||||||
That saves typing #ifdef DEBUG all the time and still preserves
|
|
||||||
lean code without debugging.
|
|
||||||
|
|
||||||
public domain (or LGPL / GPL, if you like that more;-)
|
|
||||||
generated by debugdef.pl, what was
|
|
||||||
trivially written by Thomas Orgis <thomas\@orgis.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
I could do that with variadic macros available:
|
|
||||||
#define sdebug(me, s) fprintf(stderr, "[location] " s "\\n")
|
|
||||||
#define debug(me, s, ...) fprintf(stderr, "[location] " s "\}n", __VA_ARGS__)
|
|
||||||
|
|
||||||
Variadic macros are a C99 feature...
|
|
||||||
Now just predefining stuff non-variadic for up to $num arguments.
|
|
||||||
It's cumbersome to have them all with different names, though...
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef ME
|
|
||||||
#define DBGPRFX ME": "
|
|
||||||
#else
|
|
||||||
#define DBGPRFX ""
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
EOT
|
|
||||||
printdefs(1);
|
|
||||||
print "#else\n";
|
|
||||||
printdefs(0);
|
|
||||||
print "#endif\n";
|
|
||||||
|
|
||||||
foreach my $t ('warning', 'error', 'ereturn')
|
|
||||||
{
|
|
||||||
print "\n/* $t macros also here... */\n";
|
|
||||||
print "#ifndef NO_".uc($t)."\n";
|
|
||||||
printdefs(1, $t);
|
|
||||||
print "#else\n";
|
|
||||||
printdefs(0, $t);
|
|
||||||
print "#endif\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
sub printdefs
|
|
||||||
{
|
|
||||||
my $forreal = shift;
|
|
||||||
my $type = shift;
|
|
||||||
$type = 'debug' unless defined $type;
|
|
||||||
my $i;
|
|
||||||
my $pre = ''; my $post = ''; my $rv = '';
|
|
||||||
my $notreal = '';
|
|
||||||
if($type eq 'ereturn')
|
|
||||||
{
|
|
||||||
$pre = 'do{ ';
|
|
||||||
$post = '; return rv; }while(0)';
|
|
||||||
$rv = 'rv, ';
|
|
||||||
$notreal = 'return rv';
|
|
||||||
}
|
|
||||||
while(++$i <= $num+1)
|
|
||||||
{
|
|
||||||
my @args, my $j;
|
|
||||||
while(++$j < $i){ push(@args, chr(ord('a')+$j-1)); }
|
|
||||||
unshift(@args, '') if(@args);
|
|
||||||
print '#define '.$type.($i > 1 ? ($i-1) : '').'('.$rv.'s';
|
|
||||||
print join(', ', @args).') ';
|
|
||||||
if($forreal){ print $pre.'fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] '.$type.': " s "\n", __LINE__'.join(', ', @args).")$post\n"; }
|
|
||||||
#else{ print "do {} while(0)\n"; }
|
|
||||||
else{ print "$notreal\n"; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@@ -77,6 +77,9 @@
|
|||||||
|
|
||||||
/* warning macros also here... */
|
/* warning macros also here... */
|
||||||
#ifndef NO_WARNING
|
#ifndef NO_WARNING
|
||||||
|
|
||||||
|
#define mwarning(s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%i] warning: " s "\n", __LINE__, __VA_ARGS__)
|
||||||
|
|
||||||
#define warning(s) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__)
|
#define warning(s) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__)
|
||||||
#define warning1(s, a) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__, a)
|
#define warning1(s, a) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__, a)
|
||||||
#define warning2(s, a, b) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b)
|
#define warning2(s, a, b) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b)
|
||||||
@@ -94,6 +97,7 @@
|
|||||||
#define warning14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
#define warning14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
||||||
#define warning15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
#define warning15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] warning: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
||||||
#else
|
#else
|
||||||
|
#define mwarning(s, ...)
|
||||||
#define warning(s)
|
#define warning(s)
|
||||||
#define warning1(s, a)
|
#define warning1(s, a)
|
||||||
#define warning2(s, a, b)
|
#define warning2(s, a, b)
|
||||||
@@ -114,6 +118,9 @@
|
|||||||
|
|
||||||
/* error macros also here... */
|
/* error macros also here... */
|
||||||
#ifndef NO_ERRORMSG
|
#ifndef NO_ERRORMSG
|
||||||
|
|
||||||
|
#define merror(s, ...) fprintf(stderr, DBGPRFX "[" __FILE__ ":%i] error: " s "\n", __LINE__, __VA_ARGS__)
|
||||||
|
|
||||||
#define error(s) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__)
|
#define error(s) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__)
|
||||||
#define error1(s, a) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__, a)
|
#define error1(s, a) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__, a)
|
||||||
#define error2(s, a, b) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b)
|
#define error2(s, a, b) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b)
|
||||||
@@ -131,6 +138,7 @@
|
|||||||
#define error14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
#define error14(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n)
|
||||||
#define error15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
#define error15(s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] error: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
|
||||||
#else
|
#else
|
||||||
|
#define merror(s, ...)
|
||||||
#define error(s)
|
#define error(s)
|
||||||
#define error1(s, a)
|
#define error1(s, a)
|
||||||
#define error2(s, a, b)
|
#define error2(s, a, b)
|
||||||
@@ -151,6 +159,9 @@
|
|||||||
|
|
||||||
/* ereturn macros also here... */
|
/* ereturn macros also here... */
|
||||||
#ifndef NO_ERETURN
|
#ifndef NO_ERETURN
|
||||||
|
|
||||||
|
#define mereturn(rv, s, ...) do{ fprintf(stderr, DBGPRFX "[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, __VA_ARGS__); return rv; }while(0)
|
||||||
|
|
||||||
#define ereturn(rv, s) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__); return rv; }while(0)
|
#define ereturn(rv, s) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__); return rv; }while(0)
|
||||||
#define ereturn1(rv, s, a) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a); return rv; }while(0)
|
#define ereturn1(rv, s, a) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a); return rv; }while(0)
|
||||||
#define ereturn2(rv, s, a, b) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b); return rv; }while(0)
|
#define ereturn2(rv, s, a, b) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b); return rv; }while(0)
|
||||||
@@ -168,6 +179,7 @@
|
|||||||
#define ereturn14(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n); return rv; }while(0)
|
#define ereturn14(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n); return rv; }while(0)
|
||||||
#define ereturn15(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); return rv; }while(0)
|
#define ereturn15(rv, s, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) do{ fprintf(stderr, DBGPRFX"[" __FILE__ ":%i] ereturn: " s "\n", __LINE__, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); return rv; }while(0)
|
||||||
#else
|
#else
|
||||||
|
#define mereturn(rv, s, ...) return rv
|
||||||
#define ereturn(rv, s) return rv
|
#define ereturn(rv, s) return rv
|
||||||
#define ereturn1(rv, s, a) return rv
|
#define ereturn1(rv, s, a) return rv
|
||||||
#define ereturn2(rv, s, a, b) return rv
|
#define ereturn2(rv, s, a, b) return rv
|
||||||
|
Reference in New Issue
Block a user