From: <fr...@us...> - 2009-08-02 14:22:20
|
Revision: 4062 http://fuse-emulator.svn.sourceforge.net/fuse-emulator/?rev=4062&view=rev Author: fredm Date: 2009-08-02 14:22:04 +0000 (Sun, 02 Aug 2009) Log Message: ----------- Add OS compatibility stubs ala Fuse (patch #2315512) (Chris Young & Fred). Modified Paths: -------------- trunk/fuse-utils/Makefile.am trunk/fuse-utils/compat.h trunk/fuse-utils/configure.in trunk/fuse-utils/hacking/ChangeLog trunk/fuse-utils/snap2tzx.c trunk/fuse-utils/utils.c Added Paths: ----------- trunk/fuse-utils/compat/ trunk/fuse-utils/compat/amiga/ trunk/fuse-utils/compat/amiga/Makefile.am trunk/fuse-utils/compat/amiga/osname.c trunk/fuse-utils/compat/unix/ trunk/fuse-utils/compat/unix/Makefile.am trunk/fuse-utils/compat/unix/osname.c Modified: trunk/fuse-utils/Makefile.am =================================================================== --- trunk/fuse-utils/Makefile.am 2009-07-30 23:37:29 UTC (rev 4061) +++ trunk/fuse-utils/Makefile.am 2009-08-02 14:22:04 UTC (rev 4062) @@ -23,8 +23,9 @@ AUTOMAKE_OPTIONS = foreign -SUBDIRS = hacking \ - man +SUBDIRS = @COMPAT_SUBDIR@ \ + hacking \ + man bin_PROGRAMS = createhdf \ listbasic \ @@ -53,45 +54,47 @@ createhdf_SOURCES = ide.c createhdf.c listbasic_SOURCES = listbasic.c utils.c -listbasic_LDADD = @LIBSPEC_LIBS@ +listbasic_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a profile2map_SOURCES = profile2map.c utils.c -profile2map_LDADD = @LIBSPEC_LIBS@ +profile2map_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a raw2hdf_SOURCES = ide.c raw2hdf.c rzxcheck_SOURCES = rzxcheck.c keys.c utils.c -rzxcheck_LDADD = @LIBSPEC_LIBS@ +rzxcheck_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a rzxdump_SOURCES = rzxdump.c utils.c -rzxdump_LDADD = @LIBSPEC_LIBS@ +rzxdump_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a rzxtool_SOURCES = rzxtool.c utils.c -rzxtool_LDADD = @LIBSPEC_LIBS@ +rzxtool_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a scl2trd_SOURCES = scl2trd.c snap2tzx_SOURCES = snap2tzx.c utils.c -snap2tzx_LDADD = @LIBSPEC_LIBS@ +snap2tzx_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a snapconv_SOURCES = snapconv.c utils.c -snapconv_LDADD = @LIBSPEC_LIBS@ +snapconv_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a tapeconv_SOURCES = tapeconv.c utils.c -tapeconv_LDADD = @LIBSPEC_LIBS@ +tapeconv_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a tzxlist_SOURCES = tzxlist.c utils.c -tzxlist_LDADD = @LIBSPEC_LIBS@ +tzxlist_LDADD = @LIBSPEC_LIBS@ compat/@COMPAT_OSNAME@/libcompatos.a audio2tape_SOURCES = audio2tape.cc importer/soundfile.cc importer/trigger.cc \ converter/findpilot.cc converter/findsync1.cc \ converter/getpulse1.cc converter/getpulse2.cc \ converter/getsync2.cc converter/romloader.cc \ converter/romloaderstate.cc utils.c -audio2tape_LDADD = @LIBSPEC_LIBS@ @AUDIOFILE_LIBS@ +audio2tape_LDADD = @LIBSPEC_LIBS@ @AUDIOFILE_LIBS@ \ + compat/@COMPAT_OSNAME@/libcompatos.a tape2wav_SOURCES = tape2wav.c utils.c -tape2wav_LDADD = @LIBSPEC_LIBS@ @AUDIOFILE_LIBS@ +tape2wav_LDADD = @LIBSPEC_LIBS@ @AUDIOFILE_LIBS@ \ + compat/@COMPAT_OSNAME@/libcompatos.a noinst_HEADERS = compat.h ide.h utils.h audio2tape.h importer/interpolator.h \ importer/schmitt.h importer/simple.h importer/soundfile.h \ Added: trunk/fuse-utils/compat/amiga/Makefile.am =================================================================== --- trunk/fuse-utils/compat/amiga/Makefile.am (rev 0) +++ trunk/fuse-utils/compat/amiga/Makefile.am 2009-08-02 14:22:04 UTC (rev 4062) @@ -0,0 +1,33 @@ +## Process this file with automake to produce Makefile.in +## Copyright (c) 2007-2008 Philip Kendall + +## $Id: Makefile.am 3935 2009-01-07 12:55:13Z pak21 $ + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License along +## with this program; if not, write to the Free Software Foundation, Inc., +## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +## +## Author contact information: +## +## E-mail: phi...@sh... + +AUTOMAKE_OPTIONS = foreign + +AM_CPPFLAGS = -I$(srcdir)/../.. + +noinst_LIBRARIES = libcompatos.a + +libcompatos_a_SOURCES = basename.c \ + osname.c + +INCLUDES = @LIBSPEC_CFLAGS@ Copied: trunk/fuse-utils/compat/amiga/osname.c (from rev 4060, trunk/fuse/compat/amiga/osname.c) =================================================================== --- trunk/fuse-utils/compat/amiga/osname.c (rev 0) +++ trunk/fuse-utils/compat/amiga/osname.c 2009-08-02 14:22:04 UTC (rev 4062) @@ -0,0 +1,59 @@ +/* osname.c: Get a representation of the OS we're running on + Copyright (c) 1999-2007 Philip Kendall + + $Id$ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + Author contact information: + + E-mail: phi...@sh... + +*/ + +#include <config.h> + +#include <errno.h> +#include <stdlib.h> +#include <string.h> +#include <proto/exec.h> +#include <proto/expansion.h> + +struct Library *ExpansionBase; +struct ExpansionIFace *IExpansion; + +int compat_osname( char *buffer, size_t length ) +{ + STRPTR machine; + + if( ExpansionBase = IExec->OpenLibrary( "expansion.library", 52 ) ) { + if( IExpansion = ( struct ExpansionIFace * ) IExec->GetInterface( ExpansionBase,"main",1,NULL ) ) { + + IExpansion->GetMachineInfoTags( GMIT_MachineString, &machine, + TAG_DONE ); + + snprintf( buffer, length, "%s %s %s", "AmigaOS", machine, "4.0" ); + + IExec->DropInterface( ( struct Interface * )IExpansion ); + } + IExec->CloseLibrary( ExpansionBase ); + } + else + { + return 1; + } + + return 0; +} Added: trunk/fuse-utils/compat/unix/Makefile.am =================================================================== --- trunk/fuse-utils/compat/unix/Makefile.am (rev 0) +++ trunk/fuse-utils/compat/unix/Makefile.am 2009-08-02 14:22:04 UTC (rev 4062) @@ -0,0 +1,33 @@ +## Process this file with automake to produce Makefile.in +## Copyright (c) 2007-2008 Philip Kendall + +## $Id: Makefile.am 3935 2009-01-07 12:55:13Z pak21 $ + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License along +## with this program; if not, write to the Free Software Foundation, Inc., +## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +## +## Author contact information: +## +## E-mail: phi...@sh... + +AUTOMAKE_OPTIONS = foreign + +AM_CPPFLAGS = -I$(srcdir)/../.. + +noinst_LIBRARIES = libcompatos.a + +libcompatos_a_SOURCES = basename.c \ + osname.c + +INCLUDES = @LIBSPEC_CFLAGS@ Copied: trunk/fuse-utils/compat/unix/osname.c (from rev 4060, trunk/fuse/compat/unix/osname.c) =================================================================== --- trunk/fuse-utils/compat/unix/osname.c (rev 0) +++ trunk/fuse-utils/compat/unix/osname.c 2009-08-02 14:22:04 UTC (rev 4062) @@ -0,0 +1,51 @@ +/* osname.c: Get a representation of the OS we're running on + Copyright (c) 1999-2007 Philip Kendall + + $Id$ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + Author contact information: + + E-mail: phi...@sh... + +*/ + +#include <config.h> + +#include <errno.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/utsname.h> + +extern char *progname; + +int compat_osname( char *buffer, size_t length ) +{ + struct utsname osname; + int error; + + error = uname( &osname ); + if( error < 0 ) { + fprintf( stderr, "%s: error getting system information: %s", progname, + strerror( errno ) ); + return 1; + } + + snprintf( buffer, length, "%s %s %s", osname.sysname, osname.machine, + osname.release ); + return 0; +} Modified: trunk/fuse-utils/compat.h =================================================================== --- trunk/fuse-utils/compat.h 2009-07-30 23:37:29 UTC (rev 4061) +++ trunk/fuse-utils/compat.h 2009-08-02 14:22:04 UTC (rev 4062) @@ -47,4 +47,7 @@ #define S_IWOTH 0 #endif /* #ifndef S_IWOTH */ +char *compat_basename( char *path ); +int compat_osname( char *buffer, size_t length ); + #endif /* #ifndef FUSE_UTILS_COMPAT_H */ Modified: trunk/fuse-utils/configure.in =================================================================== --- trunk/fuse-utils/configure.in 2009-07-30 23:37:29 UTC (rev 4061) +++ trunk/fuse-utils/configure.in 2009-08-02 14:22:04 UTC (rev 4062) @@ -133,7 +133,24 @@ fi AM_CONDITIONAL(BUILD_AUDIOTOOLS, test "$audiofile" = yes) +dnl Work out which compatibility routines to use +AC_MSG_CHECKING(which compatibility routines to use) +case "$target_os" in + amigaos) + COMPAT_OSNAME='amiga' + ;; + *) + COMPAT_OSNAME='unix' + ;; +esac +AC_MSG_RESULT($COMPAT_OSNAME) +COMPAT_SUBDIR="compat/$COMPAT_OSNAME" +AC_SUBST(COMPAT_SUBDIR) +AC_SUBST(COMPAT_OSNAME) + AC_OUTPUT(Makefile \ +compat/amiga/Makefile \ +compat/unix/Makefile \ fuse-utils.qpg \ hacking/Makefile \ man/Makefile) Modified: trunk/fuse-utils/hacking/ChangeLog =================================================================== --- trunk/fuse-utils/hacking/ChangeLog 2009-07-30 23:37:29 UTC (rev 4061) +++ trunk/fuse-utils/hacking/ChangeLog 2009-08-02 14:22:04 UTC (rev 4062) @@ -289,3 +289,7 @@ 20090203 man/audio2tape.1: correct documentation of default trigger (Fred). 20090411 tape2wav.c: use the new tape flag for end of tape (part of fixes for bug #2743838) (Fred). +20090803 Makefile.am,compat.h,compat/amiga/{Makefile.am,osname.c}, + compat/unix/{Makefile.am,osname.c},configure.in,snap2tzx.c,utils.c: + add OS compatibility stubs ala Fuse (patch #2315512) (Chris Young & + Fred). Modified: trunk/fuse-utils/snap2tzx.c =================================================================== --- trunk/fuse-utils/snap2tzx.c 2009-07-30 23:37:29 UTC (rev 4061) +++ trunk/fuse-utils/snap2tzx.c 2009-08-02 14:22:04 UTC (rev 4062) @@ -29,7 +29,6 @@ #include <config.h> #include <errno.h> -#include <libgen.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -37,6 +36,7 @@ #include <libspectrum.h> +#include "compat.h" #include "utils.h" char *progname; /* argv[0] */ @@ -315,7 +315,7 @@ return; } - buffer2 = basename( buffer ); + buffer2 = compat_basename( buffer ); if( title ) { printf( @@ -451,7 +451,7 @@ return 1; } - buffer2 = basename( buffer ); + buffer2 = compat_basename( buffer ); last_dot = strrchr( buffer2, '.' ); if( last_dot ) *last_dot = '\0'; if( !got_out_filename ) { Modified: trunk/fuse-utils/utils.c =================================================================== --- trunk/fuse-utils/utils.c 2009-07-30 23:37:29 UTC (rev 4061) +++ trunk/fuse-utils/utils.c 2009-08-02 14:22:04 UTC (rev 4062) @@ -70,15 +70,11 @@ size_t i; #ifndef WIN32 - struct utsname buf; + char osname[ 256 ]; int sys_error; - sys_error = uname( &buf ); - if( sys_error == -1 ) { - fprintf( stderr, "%s: error getting system information: %s\n", progname, - strerror( errno ) ); - return 1; - } + sys_error = compat_osname( osname, sizeof( osname ) ); + if( sys_error ) return 1; #endif *creator = libspectrum_creator_alloc(); @@ -110,9 +106,9 @@ snprintf( custom, 256, "libspectrum: %s\nsystem: windows\n", libspectrum_version() ); #else - snprintf( custom, 256, "libspectrum: %s\nuname: %s %s %s\n", + snprintf( custom, 256, "libspectrum: %s\nuname: %s\n", libspectrum_version(), - buf.sysname, buf.machine, buf.release ); + osname ); #endif error = libspectrum_creator_set_custom( *creator, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |