]> mj.ucw.cz Git - libucw.git/blobdiff - lib/shell/config.c
documented fbpool briefly
[libucw.git] / lib / shell / config.c
index 4a0910d1e725c9d4a95db55ba3ea66fdd80a701e..ba60f0350980861c1ee24a21456e7425744efe4f 100644 (file)
@@ -47,7 +47,7 @@ Usage: config [-C<configfile>] [-S<section>.<option>=<value>] <sections>\n\
 <value>\t\t[a-zA-Z0-9.-/]* | 'string without single quotes'<value> | \"c-like string\"<value>\n\
 \n\
 Types:\n\
 <value>\t\t[a-zA-Z0-9.-/]* | 'string without single quotes'<value> | \"c-like string\"<value>\n\
 \n\
 Types:\n\
-:\t\tString\n\
+<empty>\t\tString\n\
 #\t\t32-bit integer\n\
 ##\t\t64-bit integer\n\
 $\t\tFloating point number\n\
 #\t\t32-bit integer\n\
 ##\t\t64-bit integer\n\
 $\t\tFloating point number\n\
@@ -158,10 +158,10 @@ parse_section(struct section *section)
            }
          item->cf.cls = CC_STATIC;
          item->cf.number = 1;
            }
          item->cf.cls = CC_STATIC;
          item->cf.number = 1;
-         switch (*pos++)
+         switch (*pos)
            {
              case '#':
            {
              case '#':
-               if (*pos == '#')
+               if (*++pos == '#')
                  {
                    pos++;
                    item->cf.type = CT_U64;
                  {
                    pos++;
                    item->cf.type = CT_U64;
@@ -170,13 +170,14 @@ parse_section(struct section *section)
                  item->cf.type = CT_INT;
                break;
              case '$':
                  item->cf.type = CT_INT;
                break;
              case '$':
+               pos++;
                item->cf.type = CT_DOUBLE;
                break;
                item->cf.type = CT_DOUBLE;
                break;
-             case ':':
+             default:
+               if (!Cword(*pos))
+                 die("Invalid type syntax");
                item->cf.type = CT_STRING;
                break;
                item->cf.type = CT_STRING;
                break;
-             default:
-               die("Invalid type syntax");
            }
          parse_white();
          item->cf.name = parse_name();
            }
          parse_white();
          item->cf.name = parse_name();
@@ -273,7 +274,7 @@ parse_section(struct section *section)
        }
       if (section->item.cf.cls == CC_LIST)
         {
        }
       if (section->item.cf.cls == CC_LIST)
         {
-          item->cf.ptr = (void *)section->size;
+          item->cf.ptr = (void *)(uintptr_t)section->size;
           section->size += sizeof(union value);
         }
       else
           section->size += sizeof(union value);
         }
       else
@@ -345,7 +346,7 @@ dump_value(uns array, struct item *item, void *v)
         sprintf(buf, "%d", *(int *)v);
         break;
       case CT_U64:
         sprintf(buf, "%d", *(int *)v);
         break;
       case CT_U64:
-        sprintf(buf, "%Lu", *(u64 *)v);
+        sprintf(buf, "%llu", (long long) *(u64 *)v);
        break;
       case CT_DOUBLE:
        sprintf(buf, "%g", *(double *)v);
        break;
       case CT_DOUBLE:
        sprintf(buf, "%g", *(double *)v);
@@ -374,7 +375,7 @@ dump_item(struct item *item, void *ptr, uns path_len)
 {
   if (item->flags & FLAG_HIDE)
     return;
 {
   if (item->flags & FLAG_HIDE)
     return;
-  byte *val = (byte *)((addr_int_t)ptr + (addr_int_t)item->cf.ptr);
+  byte *val = (byte *)((uintptr_t)ptr + (uintptr_t)item->cf.ptr);
   if (item->cf.cls == CC_LIST)
     {
       uns len = strlen(item->cf.name);
   if (item->cf.cls == CC_LIST)
     {
       uns len = strlen(item->cf.name);