diff options
author | Arx Henrique Pereira da Cruz <arxcruz@gmail.com> | 2018-10-05 12:38:15 +0000 |
---|---|---|
committer | Arx Henrique Pereira da Cruz <arxcruz@gmail.com> | 2018-10-05 12:38:15 +0000 |
commit | a97f36708329912ca62f2a21d0fa1ab169a465c4 (patch) | |
tree | caed5ce0c5bc07d0550bca0b4d97f37632cc9823 | |
parent | Bump to 3.30.0 (diff) | |
parent | Makes progress to consider the decimal from percent update (diff) | |
download | zenity-a97f36708329912ca62f2a21d0fa1ab169a465c4.tar.gz zenity-a97f36708329912ca62f2a21d0fa1ab169a465c4.tar.bz2 zenity-a97f36708329912ca62f2a21d0fa1ab169a465c4.zip |
Merge branch 'master' into 'master'
Makes progress to consider the decimal from percent update
See merge request GNOME/zenity!1
-rw-r--r-- | src/progress.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/progress.c b/src/progress.c index 1a5a68fd..00bb8aaa 100644 --- a/src/progress.c +++ b/src/progress.c @@ -105,6 +105,27 @@ zenity_progress_update_time_remaining (ZenityProgressData *progress_data) { } } +static float +stof(const char* s) { + float rez = 0, fact = 1; + if (*s == '-') { + s++; + fact = -1; + } + for (int point_seen = 0; *s; s++) { + if (*s == '.' || *s == ',') { + point_seen = 1; + continue; + } + int d = *s - '0'; + if (d >= 0 && d <= 9) { + if (point_seen) fact /= 10.0f; + rez = rez * 10.0f + (float)d; + } + } + return rez * fact; +} + static gboolean zenity_progress_handle_stdin ( GIOChannel *channel, GIOCondition condition, gpointer data) { @@ -190,7 +211,7 @@ zenity_progress_handle_stdin ( continue; /* Now try to convert the thing to a number */ - percentage = CLAMP (atoi (string->str), 0, 100); + percentage = CLAMP (stof (string->str), 0, 100); gtk_progress_bar_set_fraction ( GTK_PROGRESS_BAR (progress_bar), percentage / 100.0); |