| /* |
| * show_progress.c - simple progress bar functions |
| * |
| * Copyright (c) 2010 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix |
| * |
| * See file CREDITS for list of people who contributed to this |
| * project. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 |
| * as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| #include <common.h> |
| #include <progress.h> |
| |
| #define HASHES_PER_LINE 65 |
| |
| static int printed; |
| static int progress_max; |
| static int spin; |
| |
| void show_progress(int now) |
| { |
| char spinchr[] = "\\|/-"; |
| |
| if (now < 0) { |
| printf("%c\b", spinchr[spin++ % (sizeof(spinchr) - 1)]); |
| return; |
| } |
| |
| if (progress_max) |
| now = now * HASHES_PER_LINE / progress_max; |
| |
| while (printed < now) { |
| if (!(printed % HASHES_PER_LINE) && printed) |
| printf("\n\t"); |
| printf("#"); |
| printed++; |
| } |
| } |
| |
| void init_progression_bar(int max) |
| { |
| printed = 0; |
| progress_max = max; |
| spin = 0; |
| if (progress_max) |
| printf("\t[%65s]\r\t[", ""); |
| else |
| printf("\t"); |
| } |
| |