]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_head.c
Signed-off-by: sparky4 <sparky4@cock.li>
[16.git] / src / lib / 16_head.c
index 6ad9bcc1af20c79193af0825835da3cd2a52af98..df0b31c7bdc7c1a061eb1736799dba9ae578bf43 100644 (file)
 
 #include "src/lib/16_head.h"
 
-/* local function */\r
-void wait(clock_t wait);
-void* AllocateLargestFreeBlock(size_t* Size);
-size_t GetFreeSize(void);
-long int filesize(FILE *fp);\r
-\r
 /* Function: Wait **********************************************************\r
 *\r
 *     Parameters:    wait - time in microseconds\r
@@ -44,79 +38,6 @@ void wait(clock_t wait){
        while((goal > clock()) && !kbhit()) ;\r
 } /* End of wait */
 
-void* AllocateLargestFreeBlock(size_t* Size)
-{
-  size_t s0, s1;
-  void* p;
-
-  s0 = ~(size_t)0 ^ (~(size_t)0 >> 1);
-
-  while (s0 && (p = malloc(s0)) == NULL)
-    s0 >>= 1;
-
-  if (p)
-    free(p);
-
-  s1 = s0 >> 1;
-
-  while (s1)
-  {
-    if ((p = malloc(s0 + s1)) != NULL)
-    {
-      s0 += s1;
-      free(p);
-    }
-    s1 >>= 1;
-  }
-
-  while (s0 && (p = malloc(s0)) == NULL)
-    s0 ^= s0 & -s0;
-
-  *Size = s0;
-  return p;
-}
-
-size_t GetFreeSize(void)
-{
-  size_t total = 0;
-  void* pFirst = NULL;
-  void* pLast = NULL;
-
-  for (;;)
-  {
-    size_t largest;
-    void* p = AllocateLargestFreeBlock(&largest);
-
-    if (largest < sizeof(void*))
-    {
-      if (p != NULL)
-        free(p);
-      break;
-    }
-
-    *(void**)p = NULL;
-
-    total += largest;
-
-    if (pFirst == NULL)
-      pFirst = p;
-
-    if (pLast != NULL)
-      *(void**)pLast = p;
-
-    pLast = p;
-  }
-
-  while (pFirst != NULL)
-  {
-    void* p = *(void**)pFirst;
-    free(pFirst);
-    pFirst = p;
-  }
-
-  return total;
-}
-
 long int
 filesize(FILE *fp)\r
 {\r
@@ -129,6 +50,61 @@ filesize(FILE *fp)
        return(size_of_file);\r
 }
 
+void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free)
+{
+       byte str[64];
+       strcat(strc,pee); strcat(strc,"            "); ultoa((dword)h_total,str,10); strcat(strc,str); strcat(strc,"    "); ultoa((dword)h_used,str,10); strcat(strc,str); strcat(strc,"        "); ultoa((dword)h_free,str,10); strcat(strc,str);
+       strcat(strc,"\n");
+}
+
+void print_normal_entry(char *text, dword total, dword used, dword free, byte *str)
+{
+       printf("%-17s", text);
+       convert("%8sB ", total);
+       convert("%9sB ", used);
+       convert("%9sB\n", free);
+}
+
+/*
+ * As for printf(), but format may only contain a single format specifier,
+ * which must be "%s" and is replaced with the string form of num with commas
+ * separating groups of three digits.
+ *
+ * e.g. convert("%s bytes", 1234567) -> "1,234,567 bytes"
+ */
+void convert(const char *format, dword num)
+{
+    int c, i, j, n;
+    char des[4*sizeof(dword)+3];
+    union REGS regs;
+    struct SREGS sregs;
+    char mycountry[48]; /* probably 34 bytes are enough... */
+    char ksep = ',';    /* or . */
+
+    regs.x.ax = 0x3800;
+    sregs.ds = FP_SEG(&mycountry);
+    regs.x.dx = FP_OFF(&mycountry);
+    intdosx(&regs,&regs,&sregs);
+    if (regs.x.cflag == 0) {
+      ksep = mycountry[7];        /* 1000's separator  */
+      /* dsep = mycountry[9];     ** decimal separator */
+    }
+
+    n = sprintf(des, "%lu", num);
+    /* insert commas in the string */
+    c = 3;
+    for (i = n - 3; i > 0; i--) {
+        if (c%3==0) {
+            for (j = n; j >= i; j--)
+                des[j+1] = des[j];
+            des[i]=ksep;        /* ',' */
+            n++;
+        }
+        c++;
+    }
+    printf(format, des);
+}
+
 ///////////////////////////////////////////////////////////////////////////\r
 //\r
 //      US_CheckParm() - checks to see if a string matches one of a set of\r