示例#1
0
static inline void      print_nnn(char              *number,
                                  bool              *escaped)
{
  char                  *dec_number = NULL;
  int                   dec_number_int;

  if (is_octal(number))
  {
    dec_number = oct_to_dec(number);
    dec_number_int = atoi(dec_number);

    if (dec_number_int < 128 && dec_number_int > 0)
      printf("%c", dec_number_int);
    else
      printf("\\%s", number);
    mfree(dec_number);
  }
  else
    printf("%s%s", *escaped ? "\\" : "", number);
  bzero(number, 4);
  *escaped = false;
}
示例#2
0
void* init_tarfs()
{
    HEADER *header = (HEADER*) &_binary_tarfs_start;
    int size_of_file = 0;
    fnode_t *temp_node;

    root_node = (fnode_t *)kmalloc(sizeof(struct file));
    make_node(root_node, root_node, "/", 0, 2, DIRECTORY, 0);  

    temp_node = (fnode_t *)kmalloc(sizeof(struct file)); 
    make_node(temp_node, root_node, "rootfs", 0, 2, DIRECTORY, 0);
    root_node->f_child[2] = temp_node; 
    root_node->end += 1;
    
    temp_node = (fnode_t *)kmalloc(sizeof(struct file)); 
    make_node(temp_node, root_node, "Disk", 0, 2, DIRECTORY, 0);
    root_node->f_child[3] = temp_node; 
    root_node->end += 1;

    do {
        size_of_file = oct_to_dec(atoi(header->size));

        if (kstrcmp(header->typeflag, "5") == 0) {
            parse(header->name, DIRECTORY, 0, 2);
        } else {
            parse(header->name, FILE, (uint64_t)(header + 1), (uint64_t)((void *)header + 512 + size_of_file));
        }

        if (size_of_file > 0) {
            header = header + size_of_file / (sizeof(HEADER) + 1) + 2;
        } else {
            header = header + 1;
        }
    } while(header < (HEADER*)&_binary_tarfs_end);

    return (void *)&root_node; 
}