+#include "string.h"
+#include "unistd.h"
+#include "stdio.h"
+#include "stdlib.h"
+
+#define WRITE(x) write(1, x, strlen(x))
+#define DWRITE(x) do{ \
+ if(debug) { \
+ WRITE(x); \
+ } \
+} while(0);
+#define FALSE 0
+#define TRUE !FALSE
+
+// from libowfat {{{
+static inline char tohex(char c) {
+ return c>=10?c-10+'a':c+'0';
+}
+
+unsigned int fmt_xlong(char *dest,unsigned long i) {
+ register unsigned long len,tmp;
+ /* first count the number of bytes needed */
+ for (len=1, tmp=i; tmp>15; ++len) tmp>>=4;
+ if (dest)
+ for (tmp=i, dest+=len; ; ) {
+ *--dest = tohex(tmp&15);
+ if (!(tmp>>=4)) break;
+ }
+ return len;
+}
+// }}}
+
+void printIdtr(const unsigned char* idtr, unsigned size)
+{
+ unsigned i;
+ for(i=0; i<=size; ++i) {
+ char out[4] = {0};
+ fmt_xlong(out, idtr[i]);
+ WRITE(out);
+ }
+ WRITE("\n");
+}
+