Adding the BeOS port.  More checkins to follow.
diff --git a/BeOS/ar-1.1/mwlib.h b/BeOS/ar-1.1/mwlib.h
new file mode 100644
index 0000000..67af325
--- /dev/null
+++ b/BeOS/ar-1.1/mwlib.h
@@ -0,0 +1,118 @@
+/*
+** mwlib.h - POSIX 1003.2 "ar" command
+**
+** $Id$
+**
+** This isn't a pure POSIX 1003.2 ar; it only manipulates Metrowerks
+** Library files, not general-purpose POSIX 1003.2 format archives.
+**
+** Dec. 14, 1997 Chris Herborth (chrish@qnx.com)
+**
+** This code is donated to the PUBLIC DOMAIN.  You can use, abuse, modify,
+** redistribute, steal, or otherwise manipulate this code.  No restrictions
+** at all.  If you laugh at this code, you can't use it.
+**
+** This "ar" was implemented using IEEE Std 1003.2-1992 as the basis for
+** the interface, and Metrowerk's published docs detailing their library
+** format.  Look inside for clues about how reality differs from MW's
+** documentation on BeOS...
+*/
+
+#include <support/SupportDefs.h>
+#include <time.h>
+
+/* ----------------------------------------------------------------------
+** Constants
+**
+*/
+#define MWLIB_MAGIC_WORD 'MWOB'
+#define MWLIB_MAGIC_PROC 'PPC '
+
+/* ----------------------------------------------------------------------
+** Structures
+**
+** This is based on the "Metrowerks CodeWarrior Library Reference
+** Specification", which isn't 100% accurate for BeOS.
+*/
+
+typedef struct MWLibHeader {
+	uint32 magicword;
+	uint32 magicproc;
+	uint32 magicflags;
+	uint32 version;
+
+	uint32 code_size;
+	uint32 data_size;
+
+	uint32 num_objects;
+} MWLibHeader;
+
+typedef struct MWLibFile {
+	time_t m_time;
+
+	uint32 off_filename;
+	uint32 off_fullpath;
+	uint32 off_object;
+	uint32 object_size;
+} MWLibFile;
+
+typedef struct MWLib {
+	MWLibHeader header;
+
+	MWLibFile *files;
+
+	char **names;
+
+	char **data;
+} MWLib;
+
+/* This bears no resemblance to what's in the Metrowerks docs.
+**
+** Note that this is incomplete; this is all the info I needed for
+** ar though.
+*/
+typedef struct MWObject {
+	uint32 magic_word;			/* 'MWOB' */
+	uint32 arch;				/* 'PPC '; this isn't in the docs */
+	uint32 version;
+	uint32 flags;
+
+	uint32 code_size;
+	uint32 data_size;
+} MWObject;
+
+/* ----------------------------------------------------------------------
+** Function prototypes
+**
+** load_MW_lib() - load a Metrowerks library
+**
+** Returns:
+**    B_OK - all is well
+**    B_FILE_NOT_FOUND - can't open the given file
+**    B_IO_ERROR - can't read from the given file
+**    B_BAD_VALUE - invalid magic word in the file
+**    B_MISMATCHED_VALUES - invalid processor value (ie, not a PowerPC lib),
+**                          or the magicflags member is not 0, or the file
+**                          version number isn't 1.
+**    B_NO_MEMORY - unable to allocate memory while loading the lib
+**
+** write_MW_lib() - write a Metrowerks library
+**
+** Returns:
+**    B_OK - all is well
+**
+** write_MW_lib() - write a Metrowerks library file
+**
+** Returns:
+**    B_OK - all is well; doesn't necessarily mean the file was written
+**           properly, just that you didn't lose any data
+**    B_NO_MEMORY - unable to allocate offset buffers
+**    B_ERROR - problem with backup file (can't rename existing file)
+**
+** Note:
+**    If you use this in a long-lived program, it leaks memory; the MWLib
+**    contents are never free()'d.
+*/
+status_t load_MW_lib( MWLib *lib, const char *filename );
+status_t write_MW_lib( MWLib *lib, const char *filename );
+void setfiletype( const char *filename, const char *type );