- removed '#! /bin/bash' header
[util-vserver.git] / util-vserver / lib / int2str.c
index 114b5c3..701ece4 100644 (file)
 #ifdef HAVE_CONFIG_H
 #  include <config.h>
 #endif
+#include "compat.h"
 
 #include "internal.h"
 
-#include <assert.h>
-#include <stdbool.h>
-#include <string.h>
-
 size_t
-utilvserver_uint2str(char *buf, size_t len, unsigned int val, unsigned char base)
+utilvserver_int2str(char *buf, size_t len, signed int val, unsigned char base)
 {
-  char                 *ptr = buf+len-1;
-  register size_t      res;
-  if (base>=36 || len==0) return 0;
-
-  *ptr = '\0';
-  while (ptr>buf) {
-    unsigned char      digit = val%base;
-    
-    --ptr;
-    *ptr = (digit<10 ? '0'+digit :
-           digit<36 ? 'a'+digit-10 :
-           (assert(false),'?'));
-
-    val /= base;
-    if (val==0) break;
+  int          offset = 0;
+  
+  if (val<0 && len>0) {
+    *buf++ = '-';
+    --len;
+    offset = 1;
+    val    = -val;
   }
 
-  assert(ptr>=buf && ptr<=buf+len-1);
-        
-  res = buf+len-ptr;
-  memmove(buf, ptr, res);
-
-  return res-1;
+  return utilvserver_uint2str(buf, len, val, base)+offset;
 }