diff --git a/jni/pjproject-android/.svn/pristine/f0/f0b37f205d4a2fd3f0f2464b69a8bdb4417aee57.svn-base b/jni/pjproject-android/.svn/pristine/f0/f0b37f205d4a2fd3f0f2464b69a8bdb4417aee57.svn-base
new file mode 100644
index 0000000..6a6fb29
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/f0/f0b37f205d4a2fd3f0f2464b69a8bdb4417aee57.svn-base
@@ -0,0 +1,66 @@
+ /*
+  * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
+  * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
+  * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+  */
+
+/*$Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/sweet.c,v 1.2 1996/07/02 10:15:53 jutta Exp $*/
+ 
+/* Generate code to unpack a bit array from name:#bits description */
+
+#include	<stdio.h>
+#include	"taste.h"
+#include	"proto.h"
+
+void write_code P2((s_spex, n_spex), struct spex * s_spex, int n_spex)
+{
+	struct spex	* sp = s_spex;
+	int		bits = 8;
+	int		vars;
+
+	if (!n_spex) return;
+
+	vars = sp->varsize;
+
+	while (n_spex) {
+
+		if (vars == sp->varsize) {
+			printf("\t%s  = ", sp->var);
+		} else printf("\t%s |= ", sp->var);
+
+		if (vars == bits) {
+	
+			if (bits == 8) printf( "*c++;\n" );
+			else printf( "*c++ & 0x%lX;\n",
+				~(0xfffffffe << (bits - 1)) );
+
+			if (!-- n_spex) break;
+			sp++;
+			vars = sp->varsize;
+			bits = 8;
+
+		} else if (vars < bits) {
+
+			printf( "(*c >> %d) & 0x%lX;\n", 
+				bits - vars,
+				~(0xfffffffe << (vars - 1)));
+
+			bits -= vars;
+			if (!--n_spex) break;
+			sp++;
+			vars = sp->varsize;
+
+		} else {
+			/*   vars > bits.  We're eating lower-all of c,
+			 *   but we must shift it.
+			 */
+			printf(	"(*c++ & 0x%X) << %d;\n",
+				~(0xfffffffe << (bits - 1)),
+				vars - bits );
+
+			vars -= bits;
+			bits = 8;
+		}
+	}
+}
+
