1298077Sphil/* 2298077Sphil * Copyright (c) 2014, Juniper Networks, Inc. 3298077Sphil * All rights reserved. 4298077Sphil * This SOFTWARE is licensed under the LICENSE provided in the 5298077Sphil * ../Copyright file. By downloading, installing, copying, or otherwise 6298077Sphil * using the SOFTWARE, you agree to be bound by the terms of that 7298077Sphil * LICENSE. 8298077Sphil * Phil Shafer, July 2014 9298077Sphil */ 10298077Sphil 11298077Sphil#include <stdio.h> 12298077Sphil#include <stdlib.h> 13298077Sphil#include <stdint.h> 14298077Sphil#include <string.h> 15298077Sphil 16298077Sphil#include "xo_config.h" 17298077Sphil#include "xo.h" 18298077Sphil 19298077Sphilint 20298077Sphilmain (int argc, char **argv) 21298077Sphil{ 22298077Sphil int i, count = 10; 23298077Sphil int mon = 0; 24298077Sphil xo_emit_flags_t flags = XOEF_RETAIN; 25322172Sphil int opt_color = 1; 26298077Sphil 27298077Sphil argc = xo_parse_args(argc, argv); 28298077Sphil if (argc < 0) 29298077Sphil return 1; 30298077Sphil 31298077Sphil for (argc = 1; argv[argc]; argc++) { 32298077Sphil if (strcmp(argv[argc], "xml") == 0) 33298077Sphil xo_set_style(NULL, XO_STYLE_XML); 34298077Sphil else if (strcmp(argv[argc], "json") == 0) 35298077Sphil xo_set_style(NULL, XO_STYLE_JSON); 36298077Sphil else if (strcmp(argv[argc], "text") == 0) 37298077Sphil xo_set_style(NULL, XO_STYLE_TEXT); 38298077Sphil else if (strcmp(argv[argc], "html") == 0) 39298077Sphil xo_set_style(NULL, XO_STYLE_HTML); 40322172Sphil else if (strcmp(argv[argc], "no-color") == 0) 41322172Sphil opt_color = 0; 42298077Sphil else if (strcmp(argv[argc], "pretty") == 0) 43298077Sphil xo_set_flags(NULL, XOF_PRETTY); 44298077Sphil else if (strcmp(argv[argc], "xpath") == 0) 45298077Sphil xo_set_flags(NULL, XOF_XPATH); 46298077Sphil else if (strcmp(argv[argc], "info") == 0) 47298077Sphil xo_set_flags(NULL, XOF_INFO); 48298077Sphil else if (strcmp(argv[argc], "no-retain") == 0) 49298077Sphil flags &= ~XOEF_RETAIN; 50298077Sphil else if (strcmp(argv[argc], "big") == 0) { 51298077Sphil if (argv[argc + 1]) 52298077Sphil count = atoi(argv[++argc]); 53298077Sphil } 54298077Sphil } 55298077Sphil 56298077Sphil xo_set_flags(NULL, XOF_UNITS); /* Always test w/ this */ 57322172Sphil if (opt_color) 58322172Sphil xo_set_flags(NULL, XOF_COLOR); /* Force color output */ 59298077Sphil xo_set_file(stdout); 60298077Sphil 61298077Sphil xo_open_container("top"); 62298077Sphil xo_open_container("data"); 63298077Sphil 64322172Sphil xo_emit("{C:fg-red,bg-green}Merry XMas!!{C:}\n"); 65322172Sphil 66322172Sphil xo_emit("One {C:fg-yellow,bg-blue}{:animal}{C:}, " 67322172Sphil "Two {C:fg-green,bg-yellow}{:animal}{C:}\n", 68322172Sphil "fish", "fish"); 69322172Sphil 70298077Sphil const char *fmt1 = "The {C:fg-red}{k:name}{C:reset} is " 71298077Sphil "{C:/fg-%s}{:color}{C:reset} til {:time/%02d:%02d}\n"; 72298077Sphil const char *fmt2 = "My {C:fg-red}{:hand}{C:reset} hand is " 73298077Sphil "{C:/fg-%s}{:color}{C:reset} til {:time/%02d:%02d}\n"; 74298077Sphil 75298077Sphil for (i = 0; i < count; i++) { 76298077Sphil xo_open_instance("thing"); 77298077Sphil xo_emit_f(flags, fmt1, "thing", "green", "green", 2, 15); 78298077Sphil xo_emit_f(flags, fmt2, "left", "blue", "blue", 3, 45); 79298077Sphil } 80298077Sphil 81298077Sphil xo_close_container("data"); 82298077Sphil xo_close_container_h(NULL, "top"); 83298077Sphil 84298077Sphil xo_finish(); 85298077Sphil 86298077Sphil return 0; 87298077Sphil} 88