upkg.git
7 years agolibupkg: Kill upkg_export_class. master
Nick Bowler [Fri, 13 Jul 2012 14:22:43 +0000 (10:22 -0400)]
libupkg: Kill upkg_export_class.

This function was quite broken, and crapped out on a number of the
objects in Engine.u.  Kill it off because we now have the machinery
to do this more properly.

7 years agoupkg: Pass the UPkg module struct into package_info.
Nick Bowler [Fri, 13 Jul 2012 14:20:58 +0000 (10:20 -0400)]
upkg: Pass the UPkg module struct into package_info.

7 years agouobject: Make module loader understand exports/imports.
Nick Bowler [Mon, 21 May 2012 01:34:42 +0000 (21:34 -0400)]
uobject: Make module loader understand exports/imports.

It's possible for a package to have an instance of a class defined in
that same package; therefore the module loader needs to know about this.
Bring the export class index up to the public struct so that it's
possible to tell the difference.

This makes it possible to export the textures defined in Engine.u.
There's still a few vestigial bugs left over here, but we can fix those
later.

7 years agouobject: Make logging more generic.
Nick Bowler [Sun, 20 May 2012 19:54:24 +0000 (15:54 -0400)]
uobject: Make logging more generic.

The logging functions can now be used on any GObject, not just UObject
subclasses.  In particular, it should be possible to call it on UPkg
instances which do not derive from UObject.

7 years agoupkg: Add some error checking around upkg_export_get_class.
Nick Bowler [Sun, 20 May 2012 17:29:44 +0000 (13:29 -0400)]
upkg: Add some error checking around upkg_export_get_class.

This avoids a segfault when it fails.

7 years agoengine: Implement Engine.Sound.
Nick Bowler [Sun, 20 May 2012 04:11:52 +0000 (00:11 -0400)]
engine: Implement Engine.Sound.

This one's pretty trivial; but now we can export sounds.

MMM-M-M-M-M-MONSTER KILL!

7 years agomusic: Check data size against actual file size.
Nick Bowler [Sun, 20 May 2012 04:08:12 +0000 (00:08 -0400)]
music: Check data size against actual file size.

Blindly setting the file size to something potentially larger than it
seems outright silly.  All this mucking about with the upkg_file struct
members should probably be eliminated eventually, but may as well do it
sanely for now.

7 years agoupkg: In info mode, don't fail outright if object load fails.
Nick Bowler [Sun, 20 May 2012 03:31:02 +0000 (23:31 -0400)]
upkg: In info mode, don't fail outright if object load fails.

We can still (potentially) display the file offsets even if the object
itself cannot be loaded, so we should do so.

7 years agouobject: Add support for float properties.
Nick Bowler [Sun, 20 May 2012 03:05:34 +0000 (23:05 -0400)]
uobject: Add support for float properties.

Since it's not too hard to add these, do so.  Add the DrawScale property
to Engine.Texture to demonstrate it.

7 years agouobject: Improve error handling in property decoding.
Nick Bowler [Sat, 19 May 2012 20:14:53 +0000 (16:14 -0400)]
uobject: Improve error handling in property decoding.

Verify that the encoded size is actually correct, and use the proper
logging method to report errors.

7 years agouobject: Initial support for object imports.
Nick Bowler [Sat, 19 May 2012 17:40:03 +0000 (13:40 -0400)]
uobject: Initial support for object imports.

This is missing a lot of features currently; in particular, imports will
get loaded multiple times, but we can at least resolve them and create
the relevant objects.

Add a DetailTexture property to Engine.Texture to demonstrate.

7 years agoupkg: Add support for listing package imports.
Nick Bowler [Wed, 16 May 2012 23:57:53 +0000 (19:57 -0400)]
upkg: Add support for listing package imports.

All we need is a way to get the import struct from libupkg and we can
list all the package imports pretty easily, so add that, and do so.

7 years agoupkg: Only print object properties if they are non-NULL.
Nick Bowler [Wed, 16 May 2012 23:56:42 +0000 (19:56 -0400)]
upkg: Only print object properties if they are non-NULL.

It's valid for a property to be unset, so we should not crash in this
case.

7 years agolibupkg: Make export parent handling match imports.
Nick Bowler [Wed, 16 May 2012 23:55:15 +0000 (19:55 -0400)]
libupkg: Make export parent handling match imports.

It seems pretty clear that this is meant to be a signed quantity like
other object references, although it really doesn't matter since it
should never be negative.  Nevertheless, we may as well keep
import/export handling as similar as possible.

7 years agolibupkg: Use parent pointers for imports.
Nick Bowler [Wed, 16 May 2012 23:49:44 +0000 (19:49 -0400)]
libupkg: Use parent pointers for imports.

This brings the import struct into alignment with the exports.  Move the
struct to the public header, too, as it will be needed.

7 years agouobject: Include package names in package fullname.
Nick Bowler [Wed, 16 May 2012 00:38:47 +0000 (20:38 -0400)]
uobject: Include package names in package fullname.

Now that we have access to the package in deserialize, we can include
its name.

7 years agouobject: Make the relevant UPkg available to objects.
Nick Bowler [Wed, 16 May 2012 00:29:08 +0000 (20:29 -0400)]
uobject: Make the relevant UPkg available to objects.

Instead of passing around raw "struct upkg" pointers, keep the
GTypeModule implementation around instead (which contains this
information).  This allows access to all package functions; in
particular, it allows access to the package name.

Modify implementations to get the raw "struct upkg" from the upkg_file
reference instead.

7 years agoupkg: Use proper library routines in package_export.
Nick Bowler [Wed, 16 May 2012 00:23:43 +0000 (20:23 -0400)]
upkg: Use proper library routines in package_export.

Not sure why this function contained a complete re-implementation of
u_object_new_from_package, but here we are.  Call the appropriate
library function to eliminate a pile of code.

7 years agolibupkg: Don't store upkg_priv pointer in struct upkg_file.
Nick Bowler [Wed, 16 May 2012 00:09:22 +0000 (20:09 -0400)]
libupkg: Don't store upkg_priv pointer in struct upkg_file.

If this is going to be stored in a public struct, make it actually
useful to users outside of libupkg by giving them a pointer type that
can actually be used.

7 years agolibuobject: Store hierarchical object names for UObjects.
Nick Bowler [Tue, 15 May 2012 02:15:01 +0000 (22:15 -0400)]
libuobject: Store hierarchical object names for UObjects.

Such names are useful for logging and, in general, displaying object
references in a human-readable manner.  This is only a partial
implementation, as package names are not yet available to the
deserialize method.

7 years agouobject: Add support for decoding boolean properties.
Nick Bowler [Tue, 15 May 2012 01:02:51 +0000 (21:02 -0400)]
uobject: Add support for decoding boolean properties.

Boolean properties have an encoded length of zero, but we were failing
spuriously due to an excessively broad error check.  Other than that, we
have already done all the necessary decoding for boolean properties, so
just wire up the appropriate GObject calls to make it happen.

7 years agolibupkg: Store export parent pointers directly.
Nick Bowler [Mon, 14 May 2012 21:47:14 +0000 (17:47 -0400)]
libupkg: Store export parent pointers directly.

Making users handle the package member directly leads to some fairly
ridiculous and somewhat tricky code.  Resolve them all at package load
time and store pointers directly in the upkg_export structure, which
should help simplify the callers.

At this point, we codify the "exports cannot have packages which are
imports" assumption, which appears to be valid.  It's not obvious how
name lookup could possibly succeed if this were not the case.

7 years agoupkg: Display object names in property listings.
Nick Bowler [Sat, 12 May 2012 02:09:40 +0000 (22:09 -0400)]
upkg: Display object names in property listings.

Not particularly useful right now since we can only display the last
component of the name, but it's a start.

7 years agobuild: Enable Gnulib conditional-dependencies. uobject
Nick Bowler [Sat, 12 May 2012 01:18:30 +0000 (21:18 -0400)]
build: Enable Gnulib conditional-dependencies.

This slightly improves configure time; may help more down the road if we
enable more modules.

7 years agobuild: Punt BUNDLED_LIBLDTL conditional.
Nick Bowler [Sat, 12 May 2012 01:14:03 +0000 (21:14 -0400)]
build: Punt BUNDLED_LIBLDTL conditional.

Now that fix-ltdl removes the unconditional builds of the bundled
libltdl, instead relying on normal prerequisites, there is no need for
this Automake conditional.

7 years agoengine: Fix off-by-one in PCX run-length encoder.
Nick Bowler [Fri, 11 May 2012 23:39:36 +0000 (19:39 -0400)]
engine: Fix off-by-one in PCX run-length encoder.

Runs of 64 bytes are invalid, but the encoder would emit them anyway
(which get subsequently interpreted as a run of 0).  This obviously
causes some textures to export incorrectly.

We can now export all of UTtech2.utx!

7 years agoengine: Add a unit test for the PCX run-length encoder.
Nick Bowler [Fri, 11 May 2012 23:30:57 +0000 (19:30 -0400)]
engine: Add a unit test for the PCX run-length encoder.

Since there ended up being an off-by-one bug here, we should test it.
We use the same hex decoder as decodeindex, so move that into a common
test library.

7 years agolibupkg: Fix minor type error in decodeindex test.
Nick Bowler [Fri, 11 May 2012 23:26:26 +0000 (19:26 -0400)]
libupkg: Fix minor type error in decodeindex test.

sopts is a string, so it should be a char[] rather than unsigned char[].

7 years agolibupkg: Make decodeindex test accept an empty string.
Nick Bowler [Fri, 11 May 2012 23:24:01 +0000 (19:24 -0400)]
libupkg: Make decodeindex test accept an empty string.

This test app should not reject empty input outright, because it should
be properly rejected by the function under test.

7 years agolibupkg: Actually fail if the index-decode test fails...
Nick Bowler [Fri, 11 May 2012 22:45:59 +0000 (18:45 -0400)]
libupkg: Actually fail if the index-decode test fails...

Oops.

7 years agobuild: Fix makefile rules for decode-index test program.
Nick Bowler [Fri, 11 May 2012 22:48:37 +0000 (18:48 -0400)]
build: Fix makefile rules for decode-index test program.

libupkg.la got moved as a result of the non-recursive build changes, but
it wasn't changed here.  Also fix a typo in the Gnulib prerequisites.

7 years agobuild: Non-recursively build the rest of the package.
Nick Bowler [Fri, 11 May 2012 01:53:19 +0000 (21:53 -0400)]
build: Non-recursively build the rest of the package.

7 years agobuild: Integrate libltdl non-recursively using fix-ltdl.
Nick Bowler [Thu, 10 May 2012 22:14:35 +0000 (18:14 -0400)]
build: Integrate libltdl non-recursively using fix-ltdl.

7 years agoengine: Add missing header to Makefile.am
Nick Bowler [Thu, 10 May 2012 02:32:20 +0000 (22:32 -0400)]
engine: Add missing header to Makefile.am

7 years agobuild: Integrate Gnulib non-recursively using fix-gnulib.
Nick Bowler [Thu, 10 May 2012 02:18:37 +0000 (22:18 -0400)]
build: Integrate Gnulib non-recursively using fix-gnulib.

7 years agognulib: Update to latest version.
Nick Bowler [Thu, 10 May 2012 01:43:43 +0000 (21:43 -0400)]
gnulib: Update to latest version.

7 years agomisc: Fix up paths in top-level .gitignore.
Nick Bowler [Thu, 10 May 2012 01:37:52 +0000 (21:37 -0400)]
misc: Fix up paths in top-level .gitignore.

Make paths explicitly match files in the top-level directory so that
similar paths in subdirectories are not unintentionally excluded.

7 years agouobject: First stab at a generic logging mechanism.
Nick Bowler [Wed, 9 May 2012 04:06:19 +0000 (00:06 -0400)]
uobject: First stab at a generic logging mechanism.

Let's build something on top of Glib's logging facilities which probably
work well enough for what we want to do.  Add a couple calls to the
texture class for starters.

7 years agotexture: Add initial support for texture exports.
Nick Bowler [Tue, 8 May 2012 23:53:20 +0000 (19:53 -0400)]
texture: Add initial support for texture exports.

After almost 3 years, we can finally export at least some textures!

7 years agoupkg: Improve messaging a bit.
Nick Bowler [Tue, 8 May 2012 23:45:18 +0000 (19:45 -0400)]
upkg: Improve messaging a bit.

7 years agouobject: Overhaul the UObject property decoding code.
Nick Bowler [Sat, 5 May 2012 02:53:02 +0000 (22:53 -0400)]
uobject: Overhaul the UObject property decoding code.

Mostly a total rewrite, this version actually handles struct and array
properties (read: advances something resembling the correct number of
bytes instead of trying to start the next property somewhere in the
middle of the last).  This version also has (hopefully) much clearer
tracking of file offsets.

7 years agoupkg: Print out object file offsets at high verbosity levels.
Nick Bowler [Fri, 4 May 2012 22:47:11 +0000 (18:47 -0400)]
upkg: Print out object file offsets at high verbosity levels.

When debugging deserialize methods, it can be useful to see the actual
location within the package file of the object being deserialized.  Add
a mode to print out these raw offsets when displaying object info at
high (-vvv) verbosity levels.

7 years agolibupkg: Add const qualifier to upkg_decode_index input buffer.
Nick Bowler [Fri, 4 May 2012 21:22:12 +0000 (17:22 -0400)]
libupkg: Add const qualifier to upkg_decode_index input buffer.

7 years agodocs: Add a README
Nick Bowler [Fri, 4 May 2012 01:15:34 +0000 (21:15 -0400)]
docs: Add a README

The main purpose of adding this now is to document where users can get
the patched GObject Builder tool required to build upkg.

7 years agolibupkg: Fix spurious success in upkg_decode_index.
Nick Bowler [Fri, 4 May 2012 00:28:52 +0000 (20:28 -0400)]
libupkg: Fix spurious success in upkg_decode_index.

Make the upkg_decode_index function fail if the input is truncated,
rather than successfully returning a bogus value.  As an added bonus,
this actually simplifies the code.

7 years agotests: Test some corner cases of upkg_decode_index.
Nick Bowler [Fri, 4 May 2012 00:24:48 +0000 (20:24 -0400)]
tests: Test some corner cases of upkg_decode_index.

It turns out that upkg_decode_index does not fail when there is not
a complete index encoding in the available data.  Add a test case (which
currently does not pass) to verify that the function fails in that
situation.

7 years agomusic: Fix obvious use of uninitialized variable.
Nick Bowler [Thu, 3 May 2012 04:51:08 +0000 (00:51 -0400)]
music: Fix obvious use of uninitialized variable.

7 years agoupkg: Fix missing return statement.
Nick Bowler [Fri, 1 Apr 2011 00:37:37 +0000 (20:37 -0400)]
upkg: Fix missing return statement.

7 years agoupkg: Add support for exporting individual objects.
Nick Bowler [Tue, 29 Mar 2011 02:20:40 +0000 (22:20 -0400)]
upkg: Add support for exporting individual objects.

7 years agopalette: Clean up deserialize a bit.
Nick Bowler [Tue, 29 Mar 2011 01:39:05 +0000 (21:39 -0400)]
palette: Clean up deserialize a bit.

8 years agoupkg: Handle errors from u_object_export_name.
Nick Bowler [Tue, 29 Mar 2011 01:37:03 +0000 (21:37 -0400)]
upkg: Handle errors from u_object_export_name.

As opposed to blindly proceeding with a nonsense filename...

8 years agoupkg: Print full object name when exporting.
Nick Bowler [Tue, 29 Mar 2011 00:41:00 +0000 (20:41 -0400)]
upkg: Print full object name when exporting.

8 years agolicense: Make autotools stuff available under WTFPL2.
Nick Bowler [Mon, 28 Mar 2011 23:40:45 +0000 (19:40 -0400)]
license: Make autotools stuff available under WTFPL2.

8 years agouobject: Make interface functions take UObjects directly.
Nick Bowler [Mon, 28 Mar 2011 23:35:28 +0000 (19:35 -0400)]
uobject: Make interface functions take UObjects directly.

This makes implementing the functions a little cleaner.

8 years agomusic: Migrate to GOB2.
Nick Bowler [Mon, 28 Mar 2011 22:55:07 +0000 (18:55 -0400)]
music: Migrate to GOB2.

8 years agouobject: Rename some interface-related identifiers.
Nick Bowler [Mon, 28 Mar 2011 22:53:36 +0000 (18:53 -0400)]
uobject: Rename some interface-related identifiers.

More changes to align with GOB2's expectations.

8 years agotexture: Migrate to GOB2.
Nick Bowler [Mon, 28 Mar 2011 22:51:23 +0000 (18:51 -0400)]
texture: Migrate to GOB2.

8 years agoengine: Start using GOB2 to generate GObject classes.
Nick Bowler [Fri, 25 Mar 2011 14:59:44 +0000 (10:59 -0400)]
engine: Start using GOB2 to generate GObject classes.

GOB2 allows us to eliminate a lot of boilerplate.  Unfortunately,
current versions of GOB2 don't directly support dynamic types, so you
will need a patched version of GOB2 as of this writing.  For now, just
the Palette class is built using GOB2.

8 years agoengine: Include object headers as <engine/xyz.h>.
Nick Bowler [Fri, 25 Mar 2011 00:57:22 +0000 (20:57 -0400)]
engine: Include object headers as <engine/xyz.h>.

This will work with VPATH builds even if the .h file is in the build
tree while the .c file is in the source tree, and vice versa.  For
non-VPATH builds, there should be no change in behaviour.

8 years agouobject: Rename U_OBJECT_TYPE to U_TYPE_OBJECT.
Nick Bowler [Wed, 23 Mar 2011 22:39:04 +0000 (18:39 -0400)]
uobject: Rename U_OBJECT_TYPE to U_TYPE_OBJECT.

Other tools, such as gob2, expect this naming convention.

8 years agouobject: Add initial support for object properties.
Nick Bowler [Wed, 23 Mar 2011 12:58:19 +0000 (08:58 -0400)]
uobject: Add initial support for object properties.

8 years agotexture: Add missing integer properties.
Nick Bowler [Tue, 22 Mar 2011 21:46:48 +0000 (17:46 -0400)]
texture: Add missing integer properties.

The limits for these properties were made up on the spot.

8 years agouobject: Add a helper function to load objects from packages.
Nick Bowler [Tue, 22 Mar 2011 00:11:55 +0000 (20:11 -0400)]
uobject: Add a helper function to load objects from packages.

8 years agoupkg: Print object properties in info mode.
Nick Bowler [Mon, 21 Mar 2011 13:40:38 +0000 (09:40 -0400)]
upkg: Print object properties in info mode.

8 years agotexture: Fix typo in get_property.
Nick Bowler [Mon, 21 Mar 2011 13:39:15 +0000 (09:39 -0400)]
texture: Fix typo in get_property.

These properties are unsigned ints, not booleans...

8 years agoupkg: Print class name in listings.
Nick Bowler [Mon, 21 Mar 2011 11:34:35 +0000 (07:34 -0400)]
upkg: Print class name in listings.

8 years agoengine: Implement Engine.Palette.
Nick Bowler [Sun, 13 Mar 2011 20:37:42 +0000 (16:37 -0400)]
engine: Implement Engine.Palette.

8 years agoupkg: Add an option to list packages.
Nick Bowler [Sun, 13 Mar 2011 18:06:54 +0000 (14:06 -0400)]
upkg: Add an option to list packages.

This new option will eventually replace the dual-purpose "info" option.

8 years agolicense: Update copyright notices.
Nick Bowler [Sun, 13 Mar 2011 16:52:46 +0000 (12:52 -0400)]
license: Update copyright notices.

8 years agoupkg: Add support for querying specific objects.
Nick Bowler [Sun, 13 Mar 2011 16:43:29 +0000 (12:43 -0400)]
upkg: Add support for querying specific objects.

8 years agoupkg: Embed struct upkg into the private structure.
Nick Bowler [Sat, 12 Mar 2011 01:55:50 +0000 (20:55 -0500)]
upkg: Embed struct upkg into the private structure.

This avoids the need to store a pointer to the private struct inside the
public struct and simplifies some code.

8 years agouobject: Don't access upkg_file's pkg member.
Nick Bowler [Sat, 12 Mar 2011 01:55:50 +0000 (20:55 -0500)]
uobject: Don't access upkg_file's pkg member.

The same information is already stored in the UObject class.  Use that
instead.

8 years agomusic: Remove file member from private struct.
Nick Bowler [Sat, 12 Mar 2011 01:55:50 +0000 (20:55 -0500)]
music: Remove file member from private struct.

The UObject class already has a file member.  Use that.

8 years agouobject: Remove the file parameter from deserialize.
Nick Bowler [Sat, 12 Mar 2011 01:55:50 +0000 (20:55 -0500)]
uobject: Remove the file parameter from deserialize.

The UObject class already has a file member; restructure the code to use
that instead.

8 years agouobject: Remove pkg_idx field.
Nick Bowler [Sat, 12 Mar 2011 01:55:50 +0000 (20:55 -0500)]
uobject: Remove pkg_idx field.

Nothing used this.

8 years agobuild: Rename autogen.sh to bootstrap.
Nick Bowler [Fri, 4 Mar 2011 00:49:30 +0000 (19:49 -0500)]
build: Rename autogen.sh to bootstrap.

8 years agobuild: Use autoreconf for bootstrapping.
Nick Bowler [Fri, 4 Mar 2011 00:37:08 +0000 (19:37 -0500)]
build: Use autoreconf for bootstrapping.

There is no need to re-invent autoreconf, badly.

8 years agobuild: Import libmodplug test macros from autoconf-dx.
Nick Bowler [Thu, 3 Mar 2011 23:26:31 +0000 (18:26 -0500)]
build: Import libmodplug test macros from autoconf-dx.

8 years agouobject: Add missing header to Makefile.am.
Nick Bowler [Thu, 3 Mar 2011 23:25:05 +0000 (18:25 -0500)]
uobject: Add missing header to Makefile.am.

8 years agolibupkg: Split the upkg_export struct into public/private parts.
Nick Bowler [Thu, 3 Mar 2011 02:46:19 +0000 (21:46 -0500)]
libupkg: Split the upkg_export struct into public/private parts.

This eliminates the need for dedicated functions to extract the name
and flag fields from the export struct.  It should now be easy to convey
export information to applications.

8 years agoupkg: Resolve hierarchical object references.
Nick Bowler [Thu, 3 Mar 2011 01:22:53 +0000 (20:22 -0500)]
upkg: Resolve hierarchical object references.

This doesn't actually do anything useful yet, but it's a start.

8 years agolibupkg: Make upkg_export_find less useless.
Nick Bowler [Tue, 13 Jul 2010 23:14:27 +0000 (19:14 -0400)]
libupkg: Make upkg_export_find less useless.

Add a 'parent' parameter which should allow objects to be uniquely
specified.

8 years agolibupkg: Simplify handling of format assertions.
Nick Bowler [Thu, 3 Mar 2011 01:07:31 +0000 (20:07 -0500)]
libupkg: Simplify handling of format assertions.

8 years agoupkg: Add support for controlling which package is acted upon.
Nick Bowler [Wed, 2 Mar 2011 05:31:57 +0000 (00:31 -0500)]
upkg: Add support for controlling which package is acted upon.

Instead of using the last -f option, allow the user to specify one or
more packages explicitly.  This will eventually be extended to allow
specifying individual objects.

8 years agoupkg: Improve error reporting during package load.
Nick Bowler [Wed, 2 Mar 2011 04:55:06 +0000 (23:55 -0500)]
upkg: Improve error reporting during package load.

8 years agognulib: Update to latest version.
Nick Bowler [Sun, 27 Feb 2011 16:44:01 +0000 (11:44 -0500)]
gnulib: Update to latest version.

9 years agoupkg: Update man page.
Nick Bowler [Wed, 7 Jul 2010 00:34:15 +0000 (20:34 -0400)]
upkg: Update man page.

9 years agoengine: Define the exit method.
Nick Bowler [Wed, 7 Jul 2010 00:21:43 +0000 (20:21 -0400)]
engine: Define the exit method.

Apparently, libltdl falls back to looking up the "unadorned" symbol
names if the _LTX_ symbols are not found.  This means it finds exit in
the C library instead of returning an error, with obvious consequences.

9 years agognulib: Remove link-warning.h from repository.
Nick Bowler [Tue, 27 Apr 2010 14:58:47 +0000 (10:58 -0400)]
gnulib: Remove link-warning.h from repository.

This was committed by accident earlier.

9 years agobuild: Abort configure if specified module library is not found.
Nick Bowler [Wed, 3 Feb 2010 19:40:20 +0000 (14:40 -0500)]
build: Abort configure if specified module library is not found.

If the user specifies, say, --with-modlib=modplug, it is not right to
use any other module library.  We also avoid checking for unrequested
module libraries.

9 years agoupkg: Don't crash if the specified package does not exist.
Nick Bowler [Wed, 3 Feb 2010 02:50:39 +0000 (21:50 -0500)]
upkg: Don't crash if the specified package does not exist.

Currently, g_type_module_use(pkg) will succeed even if the package does
not exist, due to the existence of shared-object-only packages.  So the
caller must look inside the UPkg structure to see if anything was
actually opened.  In the future, pending tools to create the things,
such packages probably won't exist and this hack can be removed.

9 years agomusic: Add simple file type detection to the dummy module.
Nick Bowler [Mon, 1 Feb 2010 23:30:04 +0000 (18:30 -0500)]
music: Add simple file type detection to the dummy module.

The dummy module can be a bit smarter so that the file extension of
exported data is correct.  Add support for xm, it and s3m.

9 years agoupkg: Specify package files as options.
Nick Bowler [Thu, 10 Dec 2009 04:34:13 +0000 (23:34 -0500)]
upkg: Specify package files as options.

Now, one must run "upkg -f foo.u" where previously one would run "upkg
foo.u".  This new syntax allows multiple packages to be specified on the
command line for purposes of dependency resolution and (soon) extraction
of specific objects.

The package operated upon is the last one specified in this manner.

9 years agoupkg: Don't unref packages, since gobject does not allow this.
Nick Bowler [Thu, 10 Dec 2009 04:32:07 +0000 (23:32 -0500)]
upkg: Don't unref packages, since gobject does not allow this.

9 years agolibupkg: Add explicit conversions to stdio wrappers.
Nick Bowler [Sun, 31 Jan 2010 21:53:13 +0000 (16:53 -0500)]
libupkg: Add explicit conversions to stdio wrappers.

Some C libraries provide a macro version of feof which does not convert
the provided pointer to FILE * before dereferencing it.  Ordinarily,
this conversion would occur automatically since feof's prototype
specifies FILE *, but this is suppressed in the macro case.

It is not clear to me whether this behaviour is consistent with the
requirements of the C standard.  However, after encountering at least
two implementations which do this, explicit conversions seem simple
enough.

9 years agobuild: Don't use a semicolon after sed's 't' command.
Nick Bowler [Sun, 31 Jan 2010 21:52:05 +0000 (16:52 -0500)]
build: Don't use a semicolon after sed's 't' command.

Some (namely, FreeBSD's) sed implementations fail when a semicolon is
used after a 't' command.  This behaviour appears to be acceptable
according to POSIX, so appease these implementations by passing extra
-e options to sed.

9 years agopackage: Move package search code to the VFS.
Nick Bowler [Tue, 8 Dec 2009 05:58:38 +0000 (00:58 -0500)]
package: Move package search code to the VFS.

9 years agopackage: Make the VFS directly open the package file.
Nick Bowler [Tue, 8 Dec 2009 05:54:58 +0000 (00:54 -0500)]
package: Make the VFS directly open the package file.

This is in preparation for moving the package search mechanism to the
VFS, as it nicely allows us to ensure that candidate packages actually
open successfully.

9 years agopackage: Get rid of separate mechanisms for opening packages.
Nick Bowler [Mon, 7 Dec 2009 08:01:06 +0000 (03:01 -0500)]
package: Get rid of separate mechanisms for opening packages.

Remove u_pkg_new_by_name and u_pkg_new_by_file, replacing them with
one function, u_pkg_open, that takes just a package name.  Named files
can now be part of the package search just like any other package.  This
should allow cool things like listing dependency packages on the upkg
command line.

9 years agobuild: Re-arrange CFLAGS/LDFLAGS a bit.
Nick Bowler [Mon, 7 Dec 2009 07:57:27 +0000 (02:57 -0500)]
build: Re-arrange CFLAGS/LDFLAGS a bit.