diff options
author | Daniel Stenberg <daniel@haxx.se> | 2002-11-22 13:00:10 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2002-11-22 13:00:10 +0000 |
commit | 5befad0a1bd049e5529857defaab1d058dd1dd22 (patch) | |
tree | 42f2131f6d113f687237b076e1e2198d2586a5aa /apps | |
parent | 6871977d821ed7487f91b520e39f655f5d61dc1f (diff) | |
download | rockbox-5befad0a1bd049e5529857defaab1d058dd1dd22.tar.gz rockbox-5befad0a1bd049e5529857defaab1d058dd1dd22.zip |
new file for string functions, starting with num2max5()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2874 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/string.c | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/apps/string.c b/apps/string.c new file mode 100644 index 0000000000..b150178476 --- /dev/null +++ b/apps/string.c | |||
@@ -0,0 +1,67 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2002 by Daniel Stenberg | ||
11 | * | ||
12 | * All files in this archive are subject to the GNU General Public License. | ||
13 | * See the file COPYING in the source tree root for full license agreement. | ||
14 | * | ||
15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
16 | * KIND, either express or implied. | ||
17 | * | ||
18 | ****************************************************************************/ | ||
19 | |||
20 | #include "sprintf.h" | ||
21 | #define ONE_KILOBYTE 1024 | ||
22 | #define ONE_MEGABYTE (1024*1024) | ||
23 | |||
24 | /* The point of this function would be to return a string of the input data, | ||
25 | but never longer than 5 columns. Add suffix k and M when suitable... | ||
26 | Make sure to have space for 6 bytes in the buffer. 5 letters plus the | ||
27 | terminating zero byte. */ | ||
28 | char *num2max5(unsigned int bytes, char *max5) | ||
29 | { | ||
30 | if(bytes < 100000) { | ||
31 | snprintf(max5, 6, "%5d", bytes); | ||
32 | return max5; | ||
33 | } | ||
34 | if(bytes < (9999*ONE_KILOBYTE)) { | ||
35 | snprintf(max5, 6, "%4dk", bytes/ONE_KILOBYTE); | ||
36 | return max5; | ||
37 | } | ||
38 | if(bytes < (100*ONE_MEGABYTE)) { | ||
39 | /* 'XX.XM' is good as long as we're less than 100 megs */ | ||
40 | snprintf(max5, 6, "%4d.%0dM", | ||
41 | bytes/ONE_MEGABYTE, | ||
42 | (bytes%ONE_MEGABYTE)/(ONE_MEGABYTE/10) ); | ||
43 | return max5; | ||
44 | } | ||
45 | snprintf(max5, 6, "%4dM", bytes/ONE_MEGABYTE); | ||
46 | return max5; | ||
47 | } | ||
48 | |||
49 | #ifdef TEST_MAX5 | ||
50 | int main(int argc, char **argv) | ||
51 | { | ||
52 | char buffer[32]; | ||
53 | if(argc>1) { | ||
54 | printf("%d => %s\n", | ||
55 | atoi(argv[1]), | ||
56 | num2max5(atoi(argv[1]), buffer)); | ||
57 | } | ||
58 | return 0; | ||
59 | } | ||
60 | |||
61 | #endif | ||
62 | |||
63 | /* ----------------------------------------------------------------- | ||
64 | * local variables: | ||
65 | * eval: (load-file "../firmware/rockbox-mode.el") | ||
66 | * end: | ||
67 | */ | ||