patch to import Jon Smirl's work from Bitkeeper
diff --git a/src/glut/mini/bitmap.c b/src/glut/mini/bitmap.c
new file mode 100644
index 0000000..55a031a
--- /dev/null
+++ b/src/glut/mini/bitmap.c
@@ -0,0 +1,56 @@
+
+/* Copyright (c) Mark J. Kilgard, 1994. */
+
+/* This program is freely distributable without licensing fees
+   and is provided without guarantee or warrantee expressed or
+   implied. This program is -not- in the public domain. */
+
+#include "glutbitmap.h"
+
+void APIENTRY 
+glutBitmapCharacter(GLUTbitmapFont font, int c)
+{
+  const BitmapCharRec *ch;
+  BitmapFontPtr fontinfo;
+  GLfloat swapbytes, lsbfirst, rowlength;
+  GLfloat skiprows, skippixels, alignment;
+
+#if defined(_WIN32)
+  fontinfo = (BitmapFontPtr) __glutFont(font);
+#else
+  fontinfo = (BitmapFontPtr) font;
+#endif
+
+  if (c < fontinfo->first ||
+    c >= fontinfo->first + fontinfo->num_chars)
+    return;
+  ch = fontinfo->ch[c - fontinfo->first];
+  if (ch) {
+    /* Save current modes. */
+/*     glGetFloatv(GL_UNPACK_SWAP_BYTES, &swapbytes); */
+/*     glGetFloatv(GL_UNPACK_LSB_FIRST, &lsbfirst); */
+/*     glGetFloatv(GL_UNPACK_ROW_LENGTH, &rowlength); */
+/*     glGetFloatv(GL_UNPACK_SKIP_ROWS, &skiprows); */
+/*     glGetFloatv(GL_UNPACK_SKIP_PIXELS, &skippixels); */
+       glGetFloatv(GL_UNPACK_ALIGNMENT, &alignment); 
+    /* Little endian machines (DEC Alpha for example) could
+       benefit from setting GL_UNPACK_LSB_FIRST to GL_TRUE
+       instead of GL_FALSE, but this would require changing the
+       generated bitmaps too. */
+/*     glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE); */
+/*     glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE); */
+/*     glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); */
+/*     glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); */
+/*     glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); */
+     glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 
+    glBitmap(ch->width, ch->height, ch->xorig, ch->yorig,
+      ch->advance, 0, ch->bitmap);
+    /* Restore saved modes. */
+/*     glPixelStorei(GL_UNPACK_SWAP_BYTES, swapbytes); */
+/*     glPixelStorei(GL_UNPACK_LSB_FIRST, (int)lsbfirst); */
+/*     glPixelStorei(GL_UNPACK_ROW_LENGTH, (int)rowlength); */
+/*     glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows); */
+/*     glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels); */
+     glPixelStorei(GL_UNPACK_ALIGNMENT, (int)alignment); 
+  }
+}