/* lfs_alias: Aliases to the small/native API functions with the size of long int as suffix. copyright 2010 by the mpg123 project - free software under the terms of the LGPL 2.1 see COPYING and AUTHORS files in distribution or http://mpg123.org initially written by Thomas Orgis Use case: Client code on Linux/x86-64 that defines _FILE_OFFSET_BITS to 64, which is the only choice on that platform anyway. It should be no-op, but prompts the platform-agnostic header of mpg123 to define API calls with the corresponding suffix. This file provides the names for this case. It's cruft, but glibc does it, too -- so people rely on it. Oh, and it also caters for the lunatics that define _FILE_OFFSET_BITS=32 on 32 bit platforms. */ #include "config.h" #ifndef LFS_ALIAS_BITS #error "I need the count of alias bits here." #endif /* Use the plain function names. */ #define MPG123_NO_LARGENAME MPG123_MACROCAT(_, LFS_ALIAS_BITS) #include "mpg123.h" /* Now get the rest of the infrastructure on speed, namely attribute_align_arg, to stay safe. */ #include "mpg123lib_intern.h" #define MACROCAT_REALLY(a, b) a ## b #define MACROCAT(a, b) MACROCAT_REALLY(a, b) #define ALIAS_SUFFIX MACROCAT(_, LFS_ALIAS_BITS) #define ALIAS_NAME(func) MACROCAT(func, ALIAS_SUFFIX) /* Extract the list of functions we need wrappers for, pregenerating the wrappers for simple cases: perl -ne ' if(/^\s*EXPORT\s+(\S+)\s+(mpg123_\S+)\((.*)\);\s*$/) { my $type = $1; my $name = $2; my $args = $3; next unless ($type =~ /off_t/ or $args =~ /off_t/ or ($name =~ /open/ and $name ne mpg123_open_feed)); $type =~ s/off_t/long/g; my @nargs = (); $args =~ s/off_t/long/g; foreach my $a (split(/,/, $args)) { $a =~ s/^.*\s\**([a-z_]+)$/$1/; push(@nargs, $a); } my $nargs = join(", ", @nargs); $nargs = "Human: figure me out." if($nargs =~ /\(/); print <