]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/lib/base64.c
Win32 fix -- remove debug O_NONBLOCK code
[bacula/bacula] / bacula / src / lib / base64.c
index b4459f5cbf306ed61eba17d139b4a4750f9bce1a..5d4ed4ddbf88401741b228d2729aff426ffb2e22 100644 (file)
@@ -1,4 +1,4 @@
-/*   
+/*
  *   Generic base 64 input and output routines
  *
  *    Written by Kern E. Sibbald, March MM.
@@ -7,7 +7,7 @@
  */
 
 /*
-   Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+   Copyright (C) 2000-2004 Kern Sibbald and John Walker
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -45,13 +45,13 @@ static uint8_t const base64_digits[64] =
 
 static int base64_inited = 0;
 static uint8_t base64_map[128];
-  
+
 
 /* Initialize the Base 64 conversion routines */
 void
 base64_init(void)
-{     
-   int i; 
+{
+   int i;
    memset(base64_map, 0, sizeof(base64_map));
    for (i=0; i<64; i++)
       base64_map[(uint8_t)base64_digits[i]] = i;
@@ -105,11 +105,11 @@ to_base64(intmax_t value, char *where)
  */
 int
 from_base64(intmax_t *value, char *where)
-{ 
+{
    uintmax_t val = 0;
    int i, neg;
 
-   if (!base64_inited) 
+   if (!base64_inited)
       base64_init();
    /* Check if it is negative */
    i = neg = 0;
@@ -122,100 +122,11 @@ from_base64(intmax_t *value, char *where)
       val <<= 6;
       val += base64_map[(uint8_t)where[i++]];
    }
-        
+
    *value = neg ? -(intmax_t)val : (intmax_t)val;
    return i;
 }
 
-/* Encode a stat structure into a base64 character string */
-void
-encode_stat(char *buf, struct stat *statp)
-{
-   char *p = buf;
-   /*
-    * NOTE: we should use rdev as major and minor device if
-    * it is a block or char device (S_ISCHR(statp->st_mode)
-    * or S_ISBLK(statp->st_mode)).  In all other cases,
-    * it is not used.  
-    *
-    */
-   p += to_base64((intmax_t)statp->st_dev, p);
-   *p++ = ' ';                        /* separate fields with a space */
-   p += to_base64((intmax_t)statp->st_ino, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_mode, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_nlink, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_uid, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_gid, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_rdev, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_size, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_blksize, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_blocks, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_atime, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_mtime, p);
-   *p++ = ' ';
-   p += to_base64((intmax_t)statp->st_ctime, p);
-   *p++ = 0;
-   return;
-}
-
-
-/* Decode a stat packet from base64 characters */
-void
-decode_stat(char *buf, struct stat *statp)
-{
-   char *p = buf;
-   intmax_t val;
-
-   p += from_base64(&val, p);
-   statp->st_dev = val;
-   p++;                              /* skip space */
-   p += from_base64(&val, p);
-   statp->st_ino = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_mode = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_nlink = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_uid = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_gid = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_rdev = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_size = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_blksize = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_blocks = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_atime = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_mtime = val;
-   p++;
-   p += from_base64(&val, p);
-   statp->st_ctime = val;
-   p++;
-}
 
 /*
  * Encode binary data in bin of len bytes into
@@ -285,7 +196,7 @@ int main(int argc, char *argv[])
 #ifdef TEST_MODE
 static int errfunc(const char *epath, int eernoo)
 {
-  Dmsg0(-1, "in errfunc\n");
+  printf("in errfunc\n");
   return 1;
 }
 
@@ -294,7 +205,7 @@ static int errfunc(const char *epath, int eernoo)
  * Test the base64 routines by encoding and decoding
  * lstat() packets.
  */
-int main(int argc, char *argv[]) 
+int main(int argc, char *argv[])
 {
    char where[500];
    int i;
@@ -307,7 +218,7 @@ int main(int argc, char *argv[])
    time_t t = 1028712799;
 
    if (argc > 1 && strcmp(argv[1], "-v") == 0)
-      debug_level++;  
+      debug_level++;
 
    base64_init();
 
@@ -317,17 +228,20 @@ int main(int argc, char *argv[])
    for (i=0; my_glob.gl_pathv[i]; i++) {
       fname = my_glob.gl_pathv[i];
       if (lstat(fname, &statp) < 0) {
-         printf("Cannot stat %s: %s\n", fname, strerror(errno));
+        printf("Cannot stat %s: %s\n", fname, strerror(errno));
         continue;
       }
       encode_stat(where, &statp);
+
+      printf("Encoded stat=%s\n", where);
+
+#ifdef xxx
       p = where;
       p += to_base64((intmax_t)(statp.st_atime), p);
       *p++ = ' ';
       p += to_base64((intmax_t)t, p);
       printf("%s %s\n", fname, where);
 
-#ifdef xxxx
       printf("%s %lld\n", "st_dev", (intmax_t)statp.st_dev);
       printf("%s %lld\n", "st_ino", (intmax_t)statp.st_ino);
       printf("%s %lld\n", "st_mode", (intmax_t)statp.st_mode);
@@ -343,14 +257,12 @@ int main(int argc, char *argv[])
       printf("%s %lld\n", "st_ctime", (intmax_t)statp.st_ctime);
 #endif
 
-
       if (debug_level)
-         printf("%s: len=%d val=%s\n", fname, strlen(where), where);
-      
+        printf("%s: len=%d val=%s\n", fname, strlen(where), where);
+
       decode_stat(where, &statn);
 
-#ifdef xxx
-      if (statp.st_dev != statn.st_dev || 
+      if (statp.st_dev != statn.st_dev ||
          statp.st_ino != statn.st_ino ||
          statp.st_mode != statn.st_mode ||
          statp.st_nlink != statn.st_nlink ||
@@ -364,18 +276,20 @@ int main(int argc, char *argv[])
          statp.st_mtime != statn.st_mtime ||
          statp.st_ctime != statn.st_ctime) {
 
-         printf("%s: %s\n", fname, where);
+        printf("%s: %s\n", fname, where);
         encode_stat(where, &statn);
-         printf("%s: %s\n", fname, where);
-         printf("NOT EQAL\n");
+        printf("%s: %s\n", fname, where);
+        printf("NOT EQAL\n");
       }
-#endif
 
    }
    globfree(&my_glob);
 
    printf("%d files examined\n", i);
 
+   to_base64(UINT32_MAX, where);
+   printf("UINT32_MAX=%s\n", where);
+
    return 0;
-}   
+}
 #endif