• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/ubus/examples/count.c

  1 /*
  2  * Copyright (C) 2011 Felix Fietkau <nbd@openwrt.org>
  3  *
  4  * This program is free software; you can redistribute it and/or modify
  5  * it under the terms of the GNU Lesser General Public License version 2.1
  6  * as published by the Free Software Foundation
  7  *
  8  * This program is distributed in the hope that it will be useful,
  9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 11  * GNU General Public License for more details.
 12  */
 13 
 14 #include <stdio.h>
 15 #include <stdint.h>
 16 #include <stdlib.h>
 17 #include "count.h"
 18 
 19 char *count_to_number(uint32_t num)
 20 {
 21         uint32_t ptr = 0, size = 0;
 22         uint32_t written = 0, i;
 23         int new_line_every_n_numbers = 30;
 24         char *s;
 25 
 26         for (i=0; i < num; ++i) {
 27                 size += snprintf(NULL, 0, "%u ", i);
 28                 if (i > 0 && i % new_line_every_n_numbers == 0)
 29                         size++;
 30         }
 31         size++; /* one for null char */
 32 
 33         s = calloc(size, sizeof(char));
 34         if (!s)
 35                 goto out;
 36 
 37         for (i=0; i < num; ++i) {
 38                 written = sprintf(&s[ptr], "%u ", i);
 39                 ptr  += written;
 40                 if (i > 0 && i % new_line_every_n_numbers == 0) {
 41                         sprintf(&s[ptr], "\n");
 42                         ptr++;
 43                 }
 44         }
 45 
 46 out:
 47         return s;
 48 }
 49 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt