diff --git a/src/common/qsw.c b/src/common/qsw.c
index 70770b4cc9441ddfc8ffe2cf0ca3a082b5280b7a..094ed261ef3c58db7fc8d6e84cefa0942ff71529 100644
--- a/src/common/qsw.c
+++ b/src/common/qsw.c
@@ -875,6 +875,25 @@ _print_capbitmap(FILE *fp, ELAN_CAPABILITY *cap)
 }
 #endif /* !_USE_ELAN3_CAPABILITY_STRING */
 
+char *
+qsw_capability_string(struct qsw_jobinfo *j, char *buf, size_t size)
+{
+	ELAN_CAPABILITY *cap;
+	int len;
+
+	assert(buf != NULL);
+	assert(j->j_magic == QSW_JOBINFO_MAGIC);
+
+	cap = &j->j_cap;
+
+	snprintf(buf, size, "prg=%d ctx=%x.%x nodes=%d.%d entries=%d",
+	         j->j_prognum, cap->LowContext, cap->HighContext, 
+		 cap->LowNode, cap->HighNode, 
+	         cap->Entries);
+	         
+	return buf;
+}
+
 void
 qsw_print_jobinfo(FILE *fp, struct qsw_jobinfo *jobinfo)
 {
diff --git a/src/common/qsw.h b/src/common/qsw.h
index d3d13fed81e6747335500cc5e4c5307cdd8c03ea..b2b391a1d3649a782ab848a655218f8b976937e4 100644
--- a/src/common/qsw.h
+++ b/src/common/qsw.h
@@ -81,6 +81,7 @@ int		qsw_getnodeid(void);
 int		qsw_getnodeid_byhost(char *host);
 int		qsw_gethost_bynodeid(char *host, int len, int elanid);
 
+char *		qsw_capability_string(qsw_jobinfo_t j, char *buf, size_t len);
 void		qsw_print_jobinfo(FILE *fp, struct qsw_jobinfo *jobinfo);
 
 #endif /* _QSW_INCLUDED */