latest osx publish stuff

This commit is contained in:
David Rose 2006-09-28 16:31:02 +00:00
parent 39a891e55d
commit 8de0914056
22 changed files with 154 additions and 384 deletions

View File

@ -18,7 +18,7 @@
express:c pstatclient:c prc:c pandabase:c linmath:c \ express:c pstatclient:c prc:c pandabase:c linmath:c \
putil:c display:c event:c pgraph:c gsgbase:c gobj:c mathutil:c \ putil:c display:c event:c pgraph:c gsgbase:c gobj:c mathutil:c \
lerp:c downloader:c pnmimage:c chan:c \ lerp:c downloader:c pnmimage:c chan:c \
pipeline:c cull:c pipeline:c cull:c $[if $[HAVE_NET],net:c]
#begin metalib_target #begin metalib_target
#define TARGET direct #define TARGET direct

View File

@ -4,9 +4,9 @@
express:c pandaexpress:m \ express:c pandaexpress:m \
interrogatedb:c dconfig:c dtoolconfig:m \ interrogatedb:c dconfig:c dtoolconfig:m \
dtoolutil:c dtoolbase:c dtool:m \ dtoolutil:c dtoolbase:c dtool:m \
pystub \
prc:c pstatclient:c pandabase:c linmath:c putil:c \ prc:c pstatclient:c pandabase:c linmath:c putil:c \
pipeline:c pipeline:c $[if $[HAVE_NET],net:c] \
pystub
#define C++FLAGS -DWITHIN_PANDA #define C++FLAGS -DWITHIN_PANDA

View File

@ -3,7 +3,7 @@
pstatclient:c pipeline:c panda:m \ pstatclient:c pipeline:c panda:m \
interrogatedb:c dconfig:c dtoolconfig:m \ interrogatedb:c dconfig:c dtoolconfig:m \
dtoolutil:c dtoolbase:c dtool:m prc:c pandabase:c \ dtoolutil:c dtoolbase:c dtool:m prc:c pandabase:c \
linmath:c putil:c linmath:c putil:c $[if $[HAVE_NET],net:c]
#define LOCAL_LIBS \ #define LOCAL_LIBS \
directbase directbase

View File

@ -6,7 +6,7 @@
#define LOCAL_LIBS \ #define LOCAL_LIBS \
directbase directbase
#define OTHER_LIBS \ #define OTHER_LIBS \
net:c linmath:c putil:c express:c panda:m pandaexpress:m dtoolconfig dtool $[if $[HAVE_NET],net:c] linmath:c putil:c express:c panda:m pandaexpress:m dtoolconfig dtool
#define WIN_SYS_LIBS $[WIN_SYS_LIBS] user32.lib //advapi32.lib #define WIN_SYS_LIBS $[WIN_SYS_LIBS] user32.lib //advapi32.lib
#begin lib_target #begin lib_target

View File

@ -6,7 +6,7 @@
//#define LOCAL_LIBS \ //#define LOCAL_LIBS \
// directbase // directbase
#define OTHER_LIBS \ #define OTHER_LIBS \
net:c linmath:c putil:c express:c panda:m pandaexpress:m dtoolconfig dtool $[if $[HAVE_NET],net:c] linmath:c putil:c express:c panda:m pandaexpress:m dtoolconfig dtool
#define WIN_SYS_LIBS $[WIN_SYS_LIBS] user32.lib //advapi32.lib #define WIN_SYS_LIBS $[WIN_SYS_LIBS] user32.lib //advapi32.lib
#begin bin_target #begin bin_target

View File

@ -12,10 +12,7 @@
interrogatedb:c dconfig:c dtoolconfig:m \ interrogatedb:c dconfig:c dtoolconfig:m \
dtoolutil:c dtoolbase:c dtool:m \ dtoolutil:c dtoolbase:c dtool:m \
prc:c pstatclient:c pandabase:c linmath:c putil:c \ prc:c pstatclient:c pandabase:c linmath:c putil:c \
pipeline:c pipeline:c $[if $[HAVE_NET],net:c]
#if $[and $[HAVE_NET],$[HAVE_NSPR]] \
#define OTHER_LIBS net:c $[OTHER_LIBS]
#endif
#define SOURCES \ #define SOURCES \
config_distributed.cxx config_distributed.h \ config_distributed.cxx config_distributed.h \

View File

@ -149,6 +149,7 @@ DoGenPyCode.extensionsDir = os.path.join(directDir, 'src', '$[extensions_name]')
DoGenPyCode.etcPath = [] DoGenPyCode.etcPath = []
DoGenPyCode.pythonSourcePath = [] DoGenPyCode.pythonSourcePath = []
#if $[CTA_GENERIC_GENPYCODE]
# Look for additional packages (other than the basic three) # Look for additional packages (other than the basic three)
# that the user might be dynamically attached to. # that the user might be dynamically attached to.
packages = [] packages = []
@ -204,6 +205,7 @@ for package in packages:
if isModule: if isModule:
if basename not in DoGenPyCode.codeLibs: if basename not in DoGenPyCode.codeLibs:
DoGenPyCode.codeLibs.append(basename) DoGenPyCode.codeLibs.append(basename)
#endif // CTA_GENERIC_GENPYCODE
#endif // CTPROJS #endif // CTPROJS
DoGenPyCode.run() DoGenPyCode.run()

View File

@ -9,7 +9,7 @@
interrogatedb:c dconfig:c dtoolconfig:m \ interrogatedb:c dconfig:c dtoolconfig:m \
dtoolutil:c dtoolbase:c dtool:m \ dtoolutil:c dtoolbase:c dtool:m \
pandabase:c prc:c gsgbase:c pstatclient:c \ pandabase:c prc:c gsgbase:c pstatclient:c \
pipeline:c pipeline:c $[if $[HAVE_NET],net:c]
#define SOURCES \ #define SOURCES \
config_interval.cxx config_interval.h \ config_interval.cxx config_interval.h \

View File

@ -9,7 +9,7 @@
dtoolutil:c dtoolbase:c dtool:m \ dtoolutil:c dtoolbase:c dtool:m \
pgraph:c gsgbase:c gobj:c mathutil:c pstatclient:c \ pgraph:c gsgbase:c gobj:c mathutil:c pstatclient:c \
lerp:c downloader:c pandabase:c pnmimage:c prc:c \ lerp:c downloader:c pandabase:c pnmimage:c prc:c \
pipeline:c cull:c pipeline:c cull:c $[if $[HAVE_NET],net:c]
#define SOURCES \ #define SOURCES \
showBase.cxx showBase.h showBase.cxx showBase.h

View File

@ -1,5 +1,5 @@
// //
// Config.osx.pp // Config.OSX.pp
// //
// This file defines some custom config variables for the osx // This file defines some custom config variables for the osx
// platform. It makes some initial guesses about compiler features, // platform. It makes some initial guesses about compiler features,
@ -19,67 +19,14 @@
// to a subsequent version of Panda. // to a subsequent version of Panda.
// ******************************************************************* // *******************************************************************
print $[PLATFORM]
#define PYTHON_IPATH /Library/Frameworks/Python.framework/Headers
#define HAVE_PYTHON 1
#define PYTHON_FRAMEWORK Python
// What additional flags should we pass to interrogate? // What additional flags should we pass to interrogate?
#define SYSTEM_IGATE_FLAGS -D__FLT_EVAL_METHOD__=0 -D__i386__ -D__const=const -Dvolatile -D__LITTLE_ENDIAN__ -D__inline__=inline -D__GNUC__ #define SYSTEM_IGATE_FLAGS -D__FLT_EVAL_METHOD__=0 -D__i386__ -D__const=const -Dvolatile -D__LITTLE_ENDIAN__ -D__inline__=inline -D__GNUC__
#define HAVE_GL 1 #define HAVE_GL 1
#define IS_OSX 1 #define IS_OSX 1
//#define ZLIB_IPATH /usr/include // We don't need worry about defining WORDS_BIGENDIAN (and we
//#define ZLIB_LPATH /usr/lib/ // shouldn't anyway, since ppc and intel are different). We rely on
//#define ZLIB_LIBS libz.dylib // dtoolbase.h to determine this at compilation time.
#define HAVE_ZLIB 1
#define HAVE_JPEG 1
#define HAVE_FREETYPE 1
#print Before Configure Miles
//#define HAVE_RAD_MSS 1
//#define RAD_MSS_IPATH /Users/roger/Documents/M/include
//#define RAD_MSS_LPATH /Users/roger/Documents/M/redist/macho/
//#define RAD_MSS_LIBS MilesMachO
//#define rad_mss_ipath $[RAD_MSS_IPATH]
//#define rad_mss_lpath $[RAD_MSS_LPATH]
//#define rad_mss_libs $[RAD_MSS_LIBS]
//#print -- $[RAD_MSS_IPATH]
//#print --- $[RAD_MSS_LPATH]
//#print ----$[RAD_MSS_LIBS]
//#print ---$[rad_mss_ipath]
//#print ---$[rad_mss_lpath]
//#print ---$[rad_mss_libs]
#define PNG_IPATH /opt/local/include
#define PNG_LPATH /opt/local/lib
#define PNG_LIBS png
//#define HAVE_PNG 1
#define HAVE_OPENSSL 1
// Is libfftw installed, and where?
#define FFTW_IPATH /opt/local/include
#define FFTW_LPATH /opt/local/lib
#define FFTW_LIBS drfftw dfftw
//#define HAVE_FFTW 1
#define TIFF_IPATH /opt/local/include
#define TIFF_LPATH /opt/local/lib
// Is the platform big-endian (like an SGI workstation) or
// little-endian (like a PC)? Define this to the empty string to
// indicate little-endian, or nonempty to indicate big-endian.
#define WORDS_BIGENDIAN #define WORDS_BIGENDIAN
// Does the C++ compiler support namespaces? // Does the C++ compiler support namespaces?
@ -167,7 +114,7 @@ print $[PLATFORM]
#define HAVE_IO_H #define HAVE_IO_H
// Do we have <malloc.h>? // Do we have <malloc.h>?
#define HAVE_MALLOC_H 1 #define HAVE_MALLOC_H
// Do we have <alloca.h>? // Do we have <alloca.h>?
#define HAVE_ALLOCA_H 1 #define HAVE_ALLOCA_H 1

View File

@ -1,214 +0,0 @@
//
// Config.osx.pp
//
// This file defines some custom config variables for the osx
// platform. It makes some initial guesses about compiler features,
// etc.
//
// *******************************************************************
// NOTE: you should not attempt to copy this file verbatim as your own
// personal Config.pp file. Instead, you should start with an empty
// Config.pp file, and add lines to it when you wish to override
// settings given in here. In the normal ppremake system, this file
// will always be read first, and then your personal Config.pp file
// will be read later, which gives you a chance to override the
// default settings found in this file. However, if you start by
// copying the entire file, it will be difficult to tell which
// settings you have customized, and it will be difficult to upgrade
// to a subsequent version of Panda.
// *******************************************************************
//#define PYTHON_IPATH /Library/Frameworks/Python.framework/Headers
//#define PYTHON_LPATH /Library/Frameworks/Python.framework/Headers
#define PYTHON_IPATH /Library/Frameworks/Python.framework/Headers
#define HAVE_PYTHON 1
#define PYTHON_FRAMEWORK Python
// What additional flags should we pass to interrogate?
#define SYSTEM_IGATE_FLAGS -D__FLT_EVAL_METHOD__=0 -D__i386__ -D__const=const -Dvolatile -D__LITTLE_ENDIAN__ -D__inline__=inline -D__GNUC__
#define HAVE_GL 1
#define IS_OSX 1
//#define ZLIB_IPATH /usr/include
//#define ZLIB_LPATH /usr/lib/
//#define ZLIB_LIBS libz.dylib
//#define HAVE_ZLIB 1
//#define HAVE_JPEG 1
//#define HAVE_FREETYPE 1
#print Before Configure Miles
#define HAVE_RAD_MSS 1
#define RAD_MSS_IPATH /Users/roger/m/include
#define RAD_MSS_LPATH /Users/roger/m/redist/macx86
#define RAD_MSS_LIBS MilesMachOx86
#define rad_mss_ipath $[RAD_MSS_IPATH]
#define rad_mss_lpath $[RAD_MSS_LPATH]
#define rad_mss_libs $[RAD_MSS_LIBS]
//#print -- $[RAD_MSS_IPATH]
//#print --- $[RAD_MSS_LPATH]
//#print ----$[RAD_MSS_LIBS]
//#print ---$[rad_mss_ipath]
//#print ---$[rad_mss_lpath]
//#print ---$[rad_mss_libs]
#define PNG_IPATH /opt/local/include
#define PNG_LPATH /opt/local/lib
#define PNG_LIBS png
//#define HAVE_PNG 1
#define HAVE_OPENSSL 1
// Is libfftw installed, and where?
#define FFTW_IPATH /opt/local/include
#define FFTW_LPATH /opt/local/lib
#define FFTW_LIBS rfftw fftw
//#define HAVE_FFTW 1
#define TIFF_IPATH /opt/local/include
#define TIFF_LPATH /opt/local/lib
// Is the platform big-endian (like an SGI workstation) or
// little-endian (like a PC)? Define this to the empty string to
// indicate little-endian, or nonempty to indicate big-endian.
#define WORDS_BIGENDIAN
// Does the C++ compiler support namespaces?
#define HAVE_NAMESPACE 1
// Does the C++ compiler support ios::binary?
#define HAVE_IOS_BINARY 1
// How about the typename keyword?
#define HAVE_TYPENAME 1
// Will the compiler avoid inserting extra bytes in structs between a
// base struct and its derived structs? It is safe to define this
// false if you don't know, but if you know that you can get away with
// this you may gain a tiny performance gain by defining this true.
// If you define this true incorrectly, you will get lots of
// assertion failures on execution.
#define SIMPLE_STRUCT_POINTERS
// Do we have a gettimeofday() function?
#define HAVE_GETTIMEOFDAY 1
// Does gettimeofday() take only one parameter?
#define GETTIMEOFDAY_ONE_PARAM
// Do we have getopt() and/or getopt_long_only() built into the
// system?
#define HAVE_GETOPT 1
#define HAVE_GETOPT_LONG_ONLY
// Are the above getopt() functions defined in getopt.h, or somewhere else?
#define HAVE_GETOPT_H 1
// Can we determine the terminal width by making an ioctl(TIOCGWINSZ) call?
#define IOCTL_TERMINAL_WIDTH 1
// Do the system headers define a "streamsize" typedef? How about the
// ios::binary enumerated value? And other ios typedef symbols like
// ios::openmode and ios::fmtflags?
#define HAVE_STREAMSIZE 1
#define HAVE_IOS_BINARY 1
#define HAVE_IOS_TYPEDEFS 1
// Can we safely call getenv() at static init time?
#define STATIC_INIT_GETENV 1
// Can we read the file /proc/self/environ to determine our
// environment variables at static init time?
#define HAVE_PROC_SELF_ENVIRON 1
// Do we have a global pair of argc/argv variables that we can read at
// static init time? Should we prototype them? What are they called?
#define HAVE_GLOBAL_ARGV
#define PROTOTYPE_GLOBAL_ARGV
#define GLOBAL_ARGV __Argv
#define GLOBAL_ARGC __Argc
// Can we read the file /proc/self/cmdline to determine our
// command-line arguments at static init time?
#define HAVE_PROC_SELF_CMDLINE
// Should we include <iostream> or <iostream.h>? Define HAVE_IOSTREAM
// to nonempty if we should use <iostream>, or empty if we should use
// <iostream.h>.
#define HAVE_IOSTREAM 1
// Do we have a true stringstream class defined in <sstream>?
#define HAVE_SSTREAM 1
// Does fstream::open() require a third parameter, specifying the
// umask? Versions of gcc prior to 3.2 had this.
#define HAVE_OPEN_MASK
// Do the compiler or system libraries define wchar_t for you?
#define HAVE_WCHAR_T 1
// Does <string> define the typedef wstring? Most do, but for some
// reason, versions of gcc before 3.0 didn't do this.
#define HAVE_WSTRING 1
// Do we have <new>?
#define HAVE_NEW 1
// Do we have <io.h>?
#define HAVE_IO_H
// Do we have <malloc.h>?
#define HAVE_MALLOC_H
// Do we have <alloca.h>?
#define HAVE_ALLOCA_H 1
// Do we have <locale.h>?
#define HAVE_LOCALE_H 1
// Do we have <minmax.h>?
#define HAVE_MINMAX_H
// Do we have <sys/types.h>?
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_TIME_H 1
// Do we have <unistd.h>?
#define HAVE_UNISTD_H 1
// Do we have <utime.h>?
#define HAVE_UTIME_H 1
// Do we have <dirent.h>?
#define HAVE_DIRENT_H 1
// Do we have <glob.h> (and do we want to use it instead of dirent.h)?
#define HAVE_GLOB_H 1
// Do we have <sys/soundcard.h> (and presumably a Linux-style audio
// interface)?
#define HAVE_SYS_SOUNDCARD_H 1
// Do we have RTTI (and <typeinfo>)?
#define HAVE_RTTI 1
// Must global operator new and delete functions throw exceptions?
#define GLOBAL_OPERATOR_NEW_EXCEPTIONS 1
// Modern versions of gcc do support the latest STL allocator
// definitions.
#define USE_STL_ALLOCATOR 1
// The dynamic library file extension (usually .so .dll or .dylib):
#define DYNAMIC_LIB_EXT .dylib
#define BUNDLE_EXT .so

View File

@ -876,12 +876,8 @@
#define CXX CC #define CXX CC
#endif #endif
#if $[and $[OSX_PLATFORM],$[UNIVERSAL_BINARIES]] // Configure for universal binaries on OSX.
// Configure for universal binaries on OSX. #defer ARCH_FLAGS $[if $[and $[OSX_PLATFORM],$[UNIVERSAL_BINARIES]],-arch i386 -arch ppc,]
#define ARCH_FLAGS -arch i386 -arch ppc
#else
#define ARCH_FLAGS
#endif
// How to compile a C or C++ file into a .o file. $[target] is the // How to compile a C or C++ file into a .o file. $[target] is the
// name of the .o file, $[source] is the name of the source file, // name of the .o file, $[source] is the name of the source file,

View File

@ -63,7 +63,7 @@
#define WINDOWS_PLATFORM $[or $[eq $[PLATFORM],Win32],$[eq $[PLATFORM],Cygwin]] #define WINDOWS_PLATFORM $[or $[eq $[PLATFORM],Win32],$[eq $[PLATFORM],Cygwin]]
// True if we are building on some flavor of OS X. // True if we are building on some flavor of OS X.
#define OSX_PLATFORM $[or $[eq $[PLATFORM],Darwin],$[eq $[PLATFORM],osxppc],$[eq $[PLATFORM],osxintel]] #define OSX_PLATFORM $[eq $[PLATFORM],OSX]
// True if we are building on some flavor of Unix. // True if we are building on some flavor of Unix.
#define UNIX_PLATFORM $[and $[not $[WINDOWS_PLATFORM]],$[not $[OSX_PLATFORM]]] #define UNIX_PLATFORM $[and $[not $[WINDOWS_PLATFORM]],$[not $[OSX_PLATFORM]]]

View File

@ -102,6 +102,7 @@
#define nspr_lpath $[wildcard $[NSPR_LPATH]] #define nspr_lpath $[wildcard $[NSPR_LPATH]]
#define nspr_cflags $[NSPR_CFLAGS] #define nspr_cflags $[NSPR_CFLAGS]
#define nspr_libs $[NSPR_LIBS] #define nspr_libs $[NSPR_LIBS]
#define nspr_framework $[NSPR_FRAMEWORK]
#endif #endif
#if $[HAVE_OPENSSL] #if $[HAVE_OPENSSL]
@ -278,6 +279,7 @@
#define freetype_lpath $[wildcard $[FREETYPE_LPATH]] #define freetype_lpath $[wildcard $[FREETYPE_LPATH]]
#define freetype_cflags $[FREETYPE_CFLAGS] #define freetype_cflags $[FREETYPE_CFLAGS]
#define freetype_libs $[FREETYPE_LIBS] #define freetype_libs $[FREETYPE_LIBS]
#define freetype_framework $[FREETYPE_FRAMEWORK]
#endif #endif
#if $[and $[HAVE_MAYA],$[MAYA_LOCATION]] #if $[and $[HAVE_MAYA],$[MAYA_LOCATION]]

View File

@ -64,7 +64,7 @@ ConfigVariableBool fmod_use_surround_sound
// Config variables for Miles: // Config variables for Miles:
ConfigVariableBool audio_software_midi ConfigVariableBool audio_software_midi
("audio-software-midi", false); ("audio-software-midi", true);
ConfigVariableFilename audio_dls_file ConfigVariableFilename audio_dls_file
("audio-dls-file", ""); ("audio-dls-file", "");

View File

@ -78,21 +78,15 @@ MilesAudioManager() {
S32 use_MIDI=(audio_play_midi)?1:0; S32 use_MIDI=(audio_play_midi)?1:0;
if (audio_play_midi && audio_software_midi) { if (audio_play_midi && audio_software_midi) {
use_MIDI=AIL_QUICK_DLS_ONLY; use_MIDI=AIL_QUICK_DLS_ONLY;
} }
#ifdef IS_OSX
use_MIDI=AIL_QUICK_DLS_ONLY;
audio_software_midi=true;
#endif
audio_debug(" use_digital="<<use_digital); audio_debug(" use_digital="<<use_digital);
audio_debug(" use_MIDI="<<use_MIDI); audio_debug(" use_MIDI="<<use_MIDI);
audio_debug(" audio_output_rate="<<audio_output_rate); audio_debug(" audio_output_rate="<<audio_output_rate);
audio_debug(" audio_output_bits="<<audio_output_bits); audio_debug(" audio_output_bits="<<audio_output_bits);
audio_debug(" audio_output_channels="<<audio_output_channels); audio_debug(" audio_output_channels="<<audio_output_channels);
audio_debug(" audio_software_midi="<<audio_software_midi); audio_debug(" audio_software_midi="<<audio_software_midi);
#ifndef NDEBUG //[ #if !defined(NDEBUG) && defined(AIL_MSS_version) //[
char version[8]; char version[8];
AIL_MSS_version(version, 8); AIL_MSS_version(version, 8);
audio_debug(" Mss32.dll Version: "<<version); audio_debug(" Mss32.dll Version: "<<version);
@ -136,7 +130,7 @@ audio_software_midi=true;
audio_info(" using Miles hardware midi"); audio_info(" using Miles hardware midi");
} }
} else { } else {
audio_debug(" AIL_quick_startup failed: "<<AIL_last_error()); audio_error("Unable to init MilesAudioManager. AIL_quick_startup failed: "<<AIL_last_error());
_is_valid = false; _is_valid = false;
} }
} }

View File

@ -47,20 +47,21 @@ ConfigVariableInt downloader_timeout
ConfigVariableInt downloader_timeout_retries ConfigVariableInt downloader_timeout_retries
("downloader-timeout-retries", 5); ("downloader-timeout-retries", 5);
ConfigVariableInt decompressor_buffer_size ConfigVariableDouble decompressor_step_time
("decompressor-buffer-size", 4096); ("decompressor-step-time", 0.1,
PRC_DESC("Specifies the maximum amount of time that should be consumed by "
"a single call to Decompressor::run()."));
ConfigVariableDouble decompressor_frequency ConfigVariableDouble extractor_step_time
("decompressor-frequency", 0.2); ("extractor-step-time", 0.1,
PRC_DESC("Specifies the maximum amount of time that should be consumed by "
ConfigVariableInt extractor_buffer_size "a single call to Extractor::step()."));
("extractor-buffer-size", 4096);
ConfigVariableDouble extractor_frequency
("extractor-frequency", 0.2);
ConfigVariableInt patcher_buffer_size ConfigVariableInt patcher_buffer_size
("patcher-buffer-size", 4096); ("patcher-buffer-size", 16384,
PRC_DESC("Limits the size of the buffer used in a single call to "
"Patcher::run(). Increasing this may help the Patcher "
"perform more work before returning."));
ConfigVariableBool verify_ssl ConfigVariableBool verify_ssl
("verify-ssl", true, ("verify-ssl", true,

View File

@ -38,12 +38,8 @@ extern ConfigVariableDouble downloader_frequency;
extern ConfigVariableInt downloader_timeout; extern ConfigVariableInt downloader_timeout;
extern ConfigVariableInt downloader_timeout_retries; extern ConfigVariableInt downloader_timeout_retries;
extern ConfigVariableInt decompressor_buffer_size; extern ConfigVariableDouble decompressor_step_time;
extern ConfigVariableDouble decompressor_frequency; extern ConfigVariableDouble extractor_step_time;
extern ConfigVariableInt extractor_buffer_size;
extern ConfigVariableDouble extractor_frequency;
extern ConfigVariableInt patcher_buffer_size; extern ConfigVariableInt patcher_buffer_size;
extern ConfigVariableBool verify_ssl; extern ConfigVariableBool verify_ssl;

View File

@ -27,6 +27,7 @@
#include "ramfile.h" #include "ramfile.h"
#include "zStream.h" #include "zStream.h"
#include "config_express.h" #include "config_express.h"
#include "trueClock.h"
#include "decompressor.h" #include "decompressor.h"
@ -159,19 +160,27 @@ run() {
// Hmm, we were already done. // Hmm, we were already done.
return EU_success; return EU_success;
} }
// Read a bunch of characters from the decompress stream, but no TrueClock *clock = TrueClock::get_global_ptr();
// more than decompressor_buffer_size. double now = clock->get_short_time();
int count = 0; double finish = now + decompressor_step_time;
int ch = _decompress->get();
while (!_decompress->eof() && !_decompress->fail()) { static const size_t buffer_size = 1024;
_dest->put(ch); char buffer[buffer_size];
if (++count >= decompressor_buffer_size) {
_decompress->read(buffer, buffer_size);
size_t count = _decompress->gcount();
while (count != 0) {
_dest->write(buffer, count);
now = clock->get_short_time();
if (now >= finish) {
// That's enough for now. // That's enough for now.
return EU_ok; return EU_ok;
} }
ch = _decompress->get(); _decompress->read(buffer, buffer_size);
count = _decompress->gcount();
} }
// All done! // All done!

View File

@ -155,69 +155,112 @@ step() {
_initiated = true; _initiated = true;
} }
if (_read == (istream *)NULL) { TrueClock *clock = TrueClock::get_global_ptr();
// Time to open the next subfile. double now = clock->get_short_time();
if (_request_index >= (int)_requests.size()) { double finish = now + extractor_step_time;
// All done!
reset();
return EU_success;
}
_subfile_index = _requests[_request_index]; do {
_subfile_filename = Filename(_extract_dir,
_multifile->get_subfile_name(_subfile_index));
_subfile_filename.set_binary();
_subfile_filename.make_dir();
if (!_subfile_filename.open_write(_write, true)) {
downloader_cat.error()
<< "Unable to write to " << _subfile_filename << ".\n";
reset();
return EU_error_abort;
}
_subfile_length = _multifile->get_subfile_length(_subfile_index);
_subfile_pos = 0;
_read = _multifile->open_read_subfile(_subfile_index);
if (_read == (istream *)NULL) { if (_read == (istream *)NULL) {
downloader_cat.error() // Time to open the next subfile.
<< "Unable to read subfile " if (_request_index >= (int)_requests.size()) {
<< _multifile->get_subfile_name(_subfile_index) << ".\n"; // All done!
reset(); if (downloader_cat.is_debug()) {
return EU_error_abort; downloader_cat.debug()
} << "Finished extracting.\n";
}
reset();
return EU_success;
}
_subfile_index = _requests[_request_index];
_subfile_filename = Filename(_extract_dir,
_multifile->get_subfile_name(_subfile_index));
} else if (_subfile_pos >= _subfile_length) { if (downloader_cat.is_debug()) {
// Time to close this subfile. downloader_cat.debug()
delete _read; << "Extracting " << _subfile_filename << ".\n";
_read = (istream *)NULL; }
_write.close();
_request_index++;
} else { _subfile_filename.set_binary();
// Read a number of bytes from the subfile and write them to the _subfile_filename.make_dir();
// output. if (!_subfile_filename.open_write(_write, true)) {
size_t max_bytes = min((size_t)extractor_buffer_size, downloader_cat.error()
_subfile_length - _subfile_pos); << "Unable to write to " << _subfile_filename << ".\n";
for (size_t p = 0; p < max_bytes; p++) { reset();
int byte = _read->get(); return EU_error_abort;
if (_read->eof() || _read->fail()) { }
_subfile_length = _multifile->get_subfile_length(_subfile_index);
_subfile_pos = 0;
_read = _multifile->open_read_subfile(_subfile_index);
if (_read == (istream *)NULL) {
downloader_cat.error()
<< "Unable to read subfile "
<< _multifile->get_subfile_name(_subfile_index) << ".\n";
reset();
return EU_error_abort;
}
} else if (_subfile_pos >= _subfile_length) {
// Time to close this subfile.
if (downloader_cat.is_debug()) {
downloader_cat.debug()
<< "Finished current subfile.\n";
}
delete _read;
_read = (istream *)NULL;
_write.close();
_request_index++;
} else {
// Read a number of bytes from the subfile and write them to the
// output.
static const size_t buffer_size = 1024;
char buffer[buffer_size];
size_t max_bytes = min(buffer_size, _subfile_length - _subfile_pos);
_read->read(buffer, max_bytes);
size_t count = _read->gcount();
while (count != 0) {
if (downloader_cat.is_spam()) {
downloader_cat.spam()
<< " . . . read " << count << " bytes.\n";
}
_write.write(buffer, count);
if (!_write) {
downloader_cat.error()
<< "Error writing to " << _subfile_filename << ".\n";
reset();
return EU_error_abort;
}
_subfile_pos += count;
_total_bytes_extracted += count;
now = clock->get_short_time();
if (now >= finish) {
// That's enough for now.
return EU_ok;
}
max_bytes = min(buffer_size, _subfile_length - _subfile_pos);
_read->read(buffer, max_bytes);
count = _read->gcount();
}
if (max_bytes != 0) {
downloader_cat.error() downloader_cat.error()
<< "Unexpected EOF on multifile " << _multifile_name << ".\n"; << "Unexpected EOF on multifile " << _multifile_name << ".\n";
reset(); reset();
return EU_error_abort; return EU_error_abort;
} }
_write.put(byte);
} }
if (!_write) {
downloader_cat.error() now = clock->get_short_time();
<< "Error writing to " << _subfile_filename << ".\n"; } while (now < finish);
reset();
return EU_error_abort;
}
_subfile_pos += max_bytes;
_total_bytes_extracted += max_bytes;
}
// That's enough for now.
return EU_ok; return EU_ok;
} }

View File

@ -27,7 +27,6 @@
#ifdef HAVE_FFTW #ifdef HAVE_FFTW
#ifdef IS_OSX
// hack..... // hack.....
// this is a hack to help interigate sort out a macro // this is a hack to help interigate sort out a macro
// in the system poll and select definitions // in the system poll and select definitions
@ -35,10 +34,7 @@
#ifdef howmany #ifdef howmany
#undef howmany #undef howmany
#endif #endif
#include <drfftw.h>
#else
#include <rfftw.h> #include <rfftw.h>
#endif
// These FFTW support objects can only be defined if we actually have // These FFTW support objects can only be defined if we actually have
// the FFTW library available. // the FFTW library available.

View File

@ -1,5 +1,6 @@
#define OTHER_LIBS interrogatedb:c dconfig:c dtoolconfig:m \ #define OTHER_LIBS \
dtoolutil:c dtoolbase:c dtool:m interrogatedb:c dconfig:c dtoolconfig:m \
dtoolutil:c dtoolbase:c prc:c dtool:m
#define BUILD_DIRECTORY $[and $[HAVE_NET],$[HAVE_NSPR]] #define BUILD_DIRECTORY $[and $[HAVE_NET],$[HAVE_NSPR]]
#define USE_PACKAGES net nspr #define USE_PACKAGES net nspr