Mercurial > pidgin
comparison src/util.c @ 9233:0c352d0e4ddc
[gaim-migrate @ 10029]
gaim_str_seconds_to_string() was overly complex, was painful to read, and
had far too many nested if statements. I've replaced it with a very simple,
easy to read function. Also, fixed a warning with rizzo's patch.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Mon, 07 Jun 2004 10:09:29 +0000 |
parents | b83905afbb55 |
children | f1d87ab17e41 |
comparison
equal
deleted
inserted
replaced
9232:7ffeabe6a09e | 9233:0c352d0e4ddc |
---|---|
2331 return g_strdup_printf("%.2f %s", size_mag, size_str[size_index]); | 2331 return g_strdup_printf("%.2f %s", size_mag, size_str[size_index]); |
2332 } | 2332 } |
2333 } | 2333 } |
2334 | 2334 |
2335 char * | 2335 char * |
2336 gaim_str_seconds_to_string(guint sec) | 2336 gaim_str_seconds_to_string(guint secs) |
2337 { | 2337 { |
2338 guint daze, hrs, min; | 2338 GString *gstr; |
2339 char *ret = NULL; | 2339 const char *prefix = ""; |
2340 | 2340 guint days, hrs, mins; |
2341 daze = sec / (60 * 60 * 24); | 2341 |
2342 hrs = (sec % (60 * 60 * 24)) / (60 * 60); | 2342 days = secs / (60 * 60 * 24); |
2343 min = (sec % (60 * 60)) / 60; | 2343 secs = secs % (60 * 60 * 24); |
2344 sec = min % 60; | 2344 hrs = secs / (60 * 60); |
2345 | 2345 secs = secs % (60 * 60); |
2346 if (daze) { | 2346 mins = secs / 60; |
2347 if (hrs || min) { | 2347 secs = secs % 60; |
2348 if (hrs) { | 2348 |
2349 if (min) { | 2349 gstr = g_string_new(""); |
2350 ret = g_strdup_printf( | 2350 |
2351 "%d %s, %d %s, %d %s.", | 2351 if (days > 0) |
2352 daze, ngettext("day","days",daze), | 2352 { |
2353 hrs, ngettext("hour","hours",hrs), min, ngettext("minute","minutes",min)); | 2353 g_string_append_printf(gstr, "%d %s", days, |
2354 } else { | 2354 ngettext("day", "days", days)); |
2355 ret = g_strdup_printf( | 2355 |
2356 "%d %s, %d %s.", | 2356 prefix = ", "; |
2357 daze, ngettext("day","days",daze), hrs, ngettext("hour","hours",hrs)); | 2357 } |
2358 } | 2358 |
2359 } else { | 2359 if (hrs > 0) |
2360 ret = g_strdup_printf( | 2360 { |
2361 "%d %s, %d %s.", | 2361 g_string_append_printf(gstr, "%s%d %s", prefix, hrs, |
2362 daze, ngettext("day","days",daze), min, ngettext("minute","minutes",min)); | 2362 ngettext("hour", "hours", hrs)); |
2363 } | 2363 |
2364 } else | 2364 prefix = ", "; |
2365 ret = g_strdup_printf("%d %s.", daze, ngettext("day","days",daze)); | 2365 } |
2366 } else { | 2366 |
2367 if (hrs) { | 2367 if (mins > 0) |
2368 if (min) { | 2368 { |
2369 ret = g_strdup_printf( | 2369 g_string_append_printf(gstr, "%s%d %s", prefix, mins, |
2370 "%d %s, %d %s.", | 2370 ngettext("minute", "minutes", mins)); |
2371 hrs, ngettext("hour","hours",hrs), min, ngettext("minute","minutes",min)); | 2371 } |
2372 } else { | 2372 |
2373 ret = g_strdup_printf("%d %s.", hrs, ngettext("hour","hours",hrs)); | 2373 return g_string_free(gstr, FALSE); |
2374 } | |
2375 } else { | |
2376 ret = g_strdup_printf("%d %s.", min, ngettext("minute","minutes",min)); | |
2377 } | |
2378 } | |
2379 | |
2380 return ret; | |
2381 } | 2374 } |
2382 | 2375 |
2383 /************************************************************************** | 2376 /************************************************************************** |
2384 * URI/URL Functions | 2377 * URI/URL Functions |
2385 **************************************************************************/ | 2378 **************************************************************************/ |
2413 turl += 7; | 2406 turl += 7; |
2414 url = turl; | 2407 url = turl; |
2415 } | 2408 } |
2416 | 2409 |
2417 /* parse out authentication information if supplied */ | 2410 /* parse out authentication information if supplied */ |
2418 if (at = strchr(url, '@')) { | 2411 if ((at = strchr(url, '@')) != NULL) { |
2419 g_snprintf(scan_info, sizeof(scan_info), | 2412 g_snprintf(scan_info, sizeof(scan_info), |
2420 "%%255[%s]:%%255[%s]^@", user_ctrl, passwd_ctrl); | 2413 "%%255[%s]:%%255[%s]^@", user_ctrl, passwd_ctrl); |
2421 f = sscanf(url, scan_info, user, passwd); | 2414 f = sscanf(url, scan_info, user, passwd); |
2422 | 2415 |
2423 if (f ==1 ) { | 2416 if (f ==1 ) { |