Index: trunk/psLib/src/sys/psConfigure.h
===================================================================
--- trunk/psLib/src/sys/psConfigure.h	(revision 23116)
+++ trunk/psLib/src/sys/psConfigure.h	(revision 23148)
@@ -19,4 +19,6 @@
 #ifndef PS_CONFIGURE_H
 #define PS_CONFIGURE_H
+
+#include <psString.h>
 
 /// @addtogroup SysUtils System Utilities
Index: trunk/psLib/src/types/Makefile.am
===================================================================
--- trunk/psLib/src/types/Makefile.am	(revision 23116)
+++ trunk/psLib/src/types/Makefile.am	(revision 23148)
@@ -14,4 +14,5 @@
 	psMetadataItemParse.c \
 	psMetadataItemCompare.c \
+	psMetadataHeader.c \
 	psPixels.c \
 	psArguments.c	\
@@ -30,4 +31,5 @@
 	psMetadataItemParse.h \
 	psMetadataItemCompare.h \
+	psMetadataHeader.h \
 	psPixels.h \
 	psArguments.h	\
Index: trunk/psLib/src/types/psMetadata.h
===================================================================
--- trunk/psLib/src/types/psMetadata.h	(revision 23116)
+++ trunk/psLib/src/types/psMetadata.h	(revision 23148)
@@ -30,4 +30,5 @@
 #include "psLookupTable.h"
 #include "psMutex.h"
+#include "psError.h"
 
 #define PS_DATA_IS_PRIMITIVE(TYPE) \
Index: trunk/psLib/src/types/psMetadataHeader.c
===================================================================
--- trunk/psLib/src/types/psMetadataHeader.c	(revision 23148)
+++ trunk/psLib/src/types/psMetadataHeader.c	(revision 23148)
@@ -0,0 +1,29 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+
+#include "psMemory.h"
+#include "psConfigure.h"
+#include "psMetadata.h"
+
+#include "psMetadataHeader.h"
+
+bool psLibVersionHeader(psMetadata *header)
+{
+    PS_ASSERT_METADATA_NON_NULL(header, false);
+
+    psString version = psLibVersion();  // Software version
+    psString source = psLibSource();    // Software source
+
+    psMetadataAddStr(header, PS_LIST_TAIL, "IPP.PSLIB.VERSION", PS_META_REPLACE,
+                     "psLib software version", version);
+    psMetadataAddStr(header, PS_LIST_TAIL, "IPP.PSLIB.SOURCE", PS_META_REPLACE,
+                     "psLib software source", source);
+
+    psFree(version);
+    psFree(source);
+
+    return true;
+}
Index: trunk/psLib/src/types/psMetadataHeader.h
===================================================================
--- trunk/psLib/src/types/psMetadataHeader.h	(revision 23148)
+++ trunk/psLib/src/types/psMetadataHeader.h	(revision 23148)
@@ -0,0 +1,12 @@
+#ifndef PS_METADATA_HEADER_H
+#define PS_METADATA_HEADER_H
+
+#include <psMetadata.h>
+
+/// Populate a header with version information
+bool psLibVersionHeader(
+    psMetadata *header                  ///< Header to populate
+    );
+
+
+#endif
