Changeset da0fef6 in mainline for uspace/app/bithenge/test.c


Ignore:
Timestamp:
2012-06-23T18:24:21Z (13 years ago)
Author:
Sean Bartell <wingedtachikoma@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
03b2b2c
Parents:
d5070ef
Message:

Bithenge: port to Linux and allow choosing a data source

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/bithenge/test.c

    rd5070ef rda0fef6  
    3535 */
    3636
    37 #include <loc.h>
     37#include <errno.h>
    3838#include <stdio.h>
     39#include <stdlib.h>
    3940#include <sys/types.h>
    4041#include "blob.h"
    41 #include "block.h"
    42 #include "file.h"
     42#include "source.h"
    4343#include "print.h"
    4444#include "tree.h"
    4545
    46 static void
    47 print_data(const char *data, size_t len)
    48 {
    49         while (len--)
    50                 printf("%02x ", (uint8_t)(*data++));
    51         printf("\n");
    52 }
    53 
    54 static void
    55 print_blob(bithenge_node_t *node)
    56 {
    57         bithenge_blob_t *blob = bithenge_node_as_blob(node);
    58         aoff64_t size;
    59         bithenge_blob_size(blob, &size);
    60         printf("Size: %d; ", (int)size);
    61         char buffer[64];
    62         size = sizeof(buffer);
    63         bithenge_blob_read(blob, 0, buffer, &size);
    64         print_data(buffer, size);
    65 }
    66 
    6746int main(int argc, char *argv[])
    6847{
    69         bithenge_node_t *node;
    70 
    71         service_id_t service_id;
    72         loc_service_get_id("bd/initrd", &service_id, 0);
    73         bithenge_new_block_blob(&node, service_id);
    74         printf("Data from block:bd/initrd: ");
    75         print_blob(node);
    76         bithenge_node_destroy(node);
    77 
    78         const char data[] = "'Twas brillig, and the slithy toves";
    79         bithenge_new_blob_from_data(&node, data, sizeof(data));
    80         printf("Data from memory (from_data): ");
    81         print_blob(node);
    82         bithenge_node_destroy(node);
    83 
    84         bithenge_new_blob_from_buffer(&node, data, sizeof(data), false);
    85         printf("Data from memory (from_buffer): ");
    86         print_blob(node);
    87         bithenge_node_destroy(node);
    88 
    89         bithenge_new_file_blob(&node, "/textdemo");
    90         printf("Data from file:/textdemo: ");
    91         print_blob(node);
    92         bithenge_node_destroy(node);
    93 
    94         bithenge_new_file_blob_from_fd(&node, 0);
    95         printf("Data from fd:0: ");
    96         print_blob(node);
    97         bithenge_node_destroy(node);
    98 
    99         // {True: {}, -1351: "\"false\"", "true": False, 0: b"..."}
    100         bithenge_node_t *nodes[8];
    101         bithenge_new_boolean_node(&nodes[0], true);
    102         bithenge_new_simple_internal_node(&nodes[1], NULL, 0, false);
    103         bithenge_new_integer_node(&nodes[2], -1351);
    104         bithenge_new_string_node(&nodes[3], "\"false\"", false);
    105         bithenge_new_string_node(&nodes[4], "true", false);
    106         bithenge_new_boolean_node(&nodes[5], false);
    107         bithenge_new_integer_node(&nodes[6], 0);
    108         bithenge_new_blob_from_data(&nodes[7], data, sizeof(data));
    109         bithenge_new_simple_internal_node(&node, nodes, 4, false);
    110         bithenge_print_node(BITHENGE_PRINT_PYTHON, node);
    111         printf("\n");
    112         bithenge_print_node(BITHENGE_PRINT_JSON, node);
    113         printf("\n");
    114         bithenge_node_destroy(node);
     48        if (argc < 2) {
     49                // {True: {}, -1351: "\"false\"", "true": False, 0: b"..."}
     50                const char data[] = "'Twas brillig, and the slithy toves";
     51                bithenge_node_t *node;
     52                bithenge_node_t *subnodes[8];
     53                bithenge_new_boolean_node(&subnodes[0], true);
     54                bithenge_new_simple_internal_node(&subnodes[1], NULL, 0, false);
     55                bithenge_new_integer_node(&subnodes[2], -1351);
     56                bithenge_new_string_node(&subnodes[3], "\"false\"", false);
     57                bithenge_new_string_node(&subnodes[4], "true", false);
     58                bithenge_new_boolean_node(&subnodes[5], false);
     59                bithenge_new_integer_node(&subnodes[6], 0);
     60                bithenge_new_blob_from_data(&subnodes[7], data, sizeof(data));
     61                bithenge_new_simple_internal_node(&node, subnodes, 4, false);
     62                bithenge_print_node(BITHENGE_PRINT_PYTHON, node);
     63                printf("\n");
     64                bithenge_print_node(BITHENGE_PRINT_JSON, node);
     65                printf("\n");
     66                bithenge_node_destroy(node);
     67        } else {
     68                bithenge_node_t *node;
     69                int rc = bithenge_node_from_source(&node, argv[1]);
     70                if (rc != EOK) {
     71                        printf("Error creating node from source: %s\n", str_error(rc));
     72                        return 1;
     73                }
     74                rc = bithenge_print_node(BITHENGE_PRINT_PYTHON, node);
     75                if (rc != EOK) {
     76                        printf("Error printing node: %s\n", str_error(rc));
     77                        return 1;
     78                }
     79                printf("\n");
     80                bithenge_node_destroy(node);
     81        }
    11582
    11683        return 0;
Note: See TracChangeset for help on using the changeset viewer.