test_09.c revision 277353
1277353Smarcel/* 2277353Smarcel * Copyright (c) 2015, Juniper Networks, Inc. 3277353Smarcel * All rights reserved. 4277353Smarcel * This SOFTWARE is licensed under the LICENSE provided in the 5277353Smarcel * ../Copyright file. By downloading, installing, copying, or otherwise 6277353Smarcel * using the SOFTWARE, you agree to be bound by the terms of that 7277353Smarcel * LICENSE. 8277353Smarcel * Phil Shafer, July 2015 9277353Smarcel */ 10277353Smarcel 11277353Smarcel#include <stdio.h> 12277353Smarcel#include <stdlib.h> 13277353Smarcel#include <string.h> 14277353Smarcel#include <unistd.h> 15277353Smarcel#include <errno.h> 16277353Smarcel 17277353Smarcel#include "xo.h" 18277353Smarcel 19277353Smarcelint 20277353Smarcelmain (int argc, char **argv) 21277353Smarcel{ 22277353Smarcel struct item { 23277353Smarcel const char *i_title; 24277353Smarcel int i_count; 25277353Smarcel }; 26277353Smarcel struct item list[] = { 27277353Smarcel { "gum", 1412 }, 28277353Smarcel { "rope", 85 }, 29277353Smarcel { "ladder", 0 }, 30277353Smarcel { "bolt", 4123 }, 31277353Smarcel { "water", 17 }, 32277353Smarcel { NULL, 0 } 33277353Smarcel }; 34277353Smarcel struct item *ip; 35277353Smarcel int i; 36277353Smarcel 37277353Smarcel argc = xo_parse_args(argc, argv); 38277353Smarcel if (argc < 0) 39277353Smarcel return 1; 40277353Smarcel 41277353Smarcel for (argc = 1; argv[argc]; argc++) { 42277353Smarcel if (strcmp(argv[argc], "xml") == 0) 43277353Smarcel xo_set_style(NULL, XO_STYLE_XML); 44277353Smarcel else if (strcmp(argv[argc], "json") == 0) 45277353Smarcel xo_set_style(NULL, XO_STYLE_JSON); 46277353Smarcel else if (strcmp(argv[argc], "text") == 0) 47277353Smarcel xo_set_style(NULL, XO_STYLE_TEXT); 48277353Smarcel else if (strcmp(argv[argc], "html") == 0) 49277353Smarcel xo_set_style(NULL, XO_STYLE_HTML); 50277353Smarcel else if (strcmp(argv[argc], "pretty") == 0) 51277353Smarcel xo_set_flags(NULL, XOF_PRETTY); 52277353Smarcel else if (strcmp(argv[argc], "xpath") == 0) 53277353Smarcel xo_set_flags(NULL, XOF_XPATH); 54277353Smarcel else if (strcmp(argv[argc], "info") == 0) 55277353Smarcel xo_set_flags(NULL, XOF_INFO); 56277353Smarcel else if (strcmp(argv[argc], "error") == 0) { 57277353Smarcel close(-1); 58277353Smarcel xo_err(1, "error detected"); 59277353Smarcel } 60277353Smarcel } 61277353Smarcel 62277353Smarcel xo_set_flags(NULL, XOF_KEYS); 63277353Smarcel xo_set_program("test"); 64277353Smarcel 65277353Smarcel xo_open_container_h(NULL, "top"); 66277353Smarcel 67277353Smarcel xo_open_container("data"); 68277353Smarcel xo_open_container("contents"); 69277353Smarcel 70277353Smarcel xo_emit("{T:Item/%-10s}{T:Count/%12s}\n"); 71277353Smarcel 72277353Smarcel for (ip = list; ip->i_title; ip++) { 73277353Smarcel xo_emit("Name: {l:name/%-10s/%s}\n", ip->i_title); 74277353Smarcel } 75277353Smarcel 76277353Smarcel xo_close_container("contents"); 77277353Smarcel 78277353Smarcel xo_emit("\n\n"); 79277353Smarcel xo_open_container("contents"); 80277353Smarcel 81277353Smarcel xo_emit("{T:Item/%-10s}{T:Count/%12s}\n"); 82277353Smarcel 83277353Smarcel for (ip = list; ip->i_title; ip++) { 84277353Smarcel xo_emit("Name: {l:item/%-10s/%s}\n", ip->i_title); 85277353Smarcel } 86277353Smarcel 87277353Smarcel xo_close_container("contents"); 88277353Smarcel 89277353Smarcel xo_emit("\n\n"); 90277353Smarcel 91277353Smarcel xo_open_container("contents"); 92277353Smarcel xo_emit("{T:Test/%-10s}{T:Three/%12s}\n"); 93277353Smarcel 94277353Smarcel xo_open_list("item"); 95277353Smarcel for (ip = list; ip->i_title; ip++) { 96277353Smarcel xo_emit("Name: {l:item/%-10s/%s}\n", ip->i_title); 97277353Smarcel } 98277353Smarcel xo_emit("{Lwc:/Total:}{:total}\n", "six"); 99277353Smarcel 100277353Smarcel xo_emit("{:one}", "one"); 101277353Smarcel xo_emit("{l:two}", "two"); 102277353Smarcel xo_emit("{:three}", "three"); 103277353Smarcel 104277353Smarcel 105277353Smarcel xo_close_container("contents"); 106277353Smarcel 107277353Smarcel xo_emit("\n\n"); 108277353Smarcel 109277353Smarcel xo_close_container_h(NULL, "top"); 110277353Smarcel 111277353Smarcel xo_finish(); 112277353Smarcel 113277353Smarcel return 0; 114277353Smarcel} 115