[flashrom] [PATCH 5/5] squash! print_wiki.c fix columns calculations
Stefan Tauner
stefan.tauner at student.tuwien.ac.at
Sat Feb 25 21:23:40 CET 2012
- chips
Signed-off-by: Stefan Tauner <stefan.tauner at student.tuwien.ac.at>
---
print_wiki.c | 30 ++++++++++++++++++------------
1 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/print_wiki.c b/print_wiki.c
index d55563c..43fab47 100644
--- a/print_wiki.c
+++ b/print_wiki.c
@@ -224,6 +224,7 @@ static void print_supported_chips_wiki(int cols)
{
int i = 0, c = 1, chipcount = 0;
const struct flashchip *f, *old = NULL;
+ unsigned int lines_per_col;
uint32_t t;
char *s;
char vmax[6];
@@ -238,21 +239,28 @@ static void print_supported_chips_wiki(int cols)
chipcount++;
}
+ /* +1 to force the resulting number of columns to be < cols */
+ lines_per_col = chipcount / cols + ((chipcount%cols) > 0 ? 1 : 0);
+
printf("\n== Supported chips ==\n\nTotal amount of supported "
- "chips: '''%d'''\n\n{| border=\"0\" valign=\"top\"\n"
- "| valign=\"top\"|\n\n%s", chipcount, chip_th);
+ "chips: '''%d'''\n\n{| border=\"0\" valign=\"top\"\n",
+ chipcount);
- for (f = flashchips; f->name != NULL; f++, i++) {
+ for (f = flashchips; f->name != NULL; f++) {
/* Don't print generic entries. */
if (!strncmp(f->vendor, "Unknown", 7) ||
!strncmp(f->vendor, "Programmer", 10) ||
!strncmp(f->name, "unknown", 7))
continue;
+ if ((i % lines_per_col) == 0)
+ printf("| valign=\"top\"|\n\n%s", chip_th);
+
/* Alternate colors if the vendor changes. */
if (old != NULL && strcmp(old->vendor, f->vendor))
c = !c;
+ old = f;
t = f->tested;
s = flashbuses_to_text(f->bustype);
sprintf(vmin, "%0.03f", f->voltage.min / (double)1000);
@@ -276,16 +284,14 @@ static void print_supported_chips_wiki(int cols)
f->voltage.min ? vmax : "N/A");
free(s);
- /* Split table into 'cols' columns. */
- if (i >= (chipcount / cols + 1)) {
- printf("\n|}\n\n| valign=\"top\"|\n\n%s", chip_th);
- i = 0;
- }
-
- old = f;
+ if (((i % lines_per_col) + 1) == lines_per_col)
+ printf("\n|}\n\n");
+ i++;
}
-
- printf("\n|}\n\n|}\n");
+ /* end inner table if it did not fill the last column fully */
+ if (((i % lines_per_col)) > 0)
+ printf("\n|}\n\n");
+ printf("|}\n\n");
}
/* Not needed for CONFIG_INTERNAL, but for all other PCI-based programmers. */
--
1.7.1
More information about the flashrom
mailing list