xref: /haiku/src/apps/diskusage/DiskUsage.cpp (revision 546208a53940a26c6379c48a7854ade1a8250fc5)
1de23995aSStephan Aßmus /*
2de23995aSStephan Aßmus  * Copyright (c) 1998-2007 Matthijs Hollemans
39eb3addaSJonas Sundström  * All rights reserved. Distributed under the terms of the MIT License.
4de23995aSStephan Aßmus  */
5de23995aSStephan Aßmus 
6de23995aSStephan Aßmus 
7de23995aSStephan Aßmus #include "App.h"
8de23995aSStephan Aßmus 
995780b64SPhilippe Saint-Pierre #include <TrackerAddOnAppLaunch.h>
1095780b64SPhilippe Saint-Pierre 
11973f8e21SSiarzhuk Zharski #include <stdio.h>
12de23995aSStephan Aßmus 
13973f8e21SSiarzhuk Zharski #include <Catalog.h>
14973f8e21SSiarzhuk Zharski 
15973f8e21SSiarzhuk Zharski #include "DiskUsage.h"
16973f8e21SSiarzhuk Zharski 
17*546208a5SOliver Tappe #undef B_TRANSLATION_CONTEXT
18*546208a5SOliver Tappe #define B_TRANSLATION_CONTEXT "DiskUsage"
19973f8e21SSiarzhuk Zharski 
20973f8e21SSiarzhuk Zharski entry_ref helpFileRef;
21973f8e21SSiarzhuk Zharski bool helpFileWasFound = false;
22973f8e21SSiarzhuk Zharski 
23973f8e21SSiarzhuk Zharski void
248d779aa8SPhilippe Saint-Pierre size_to_string(off_t byteCount, char* name, int maxLength)
25973f8e21SSiarzhuk Zharski {
26973f8e21SSiarzhuk Zharski 	struct {
27973f8e21SSiarzhuk Zharski 		off_t		limit;
28973f8e21SSiarzhuk Zharski 		float		divisor;
29973f8e21SSiarzhuk Zharski 		const char*	format;
30973f8e21SSiarzhuk Zharski 	} scale[] = {
31973f8e21SSiarzhuk Zharski 		{ 0x100000,				1024.0,
32973f8e21SSiarzhuk Zharski 			B_TRANSLATE("%.2f KiB") },
33973f8e21SSiarzhuk Zharski 		{ 0x40000000,			1048576.0,
34973f8e21SSiarzhuk Zharski 			B_TRANSLATE("%.2f MiB") },
35973f8e21SSiarzhuk Zharski 		{ 0x10000000000ull,		1073741824.0,
36973f8e21SSiarzhuk Zharski 			B_TRANSLATE("%.2f GiB") },
37973f8e21SSiarzhuk Zharski 		{ 0x4000000000000ull,	1.09951162778e+12,
38973f8e21SSiarzhuk Zharski 			B_TRANSLATE("%.2f TiB") }
39973f8e21SSiarzhuk Zharski 	};
40973f8e21SSiarzhuk Zharski 
41973f8e21SSiarzhuk Zharski 	if (byteCount < 1024) {
428d779aa8SPhilippe Saint-Pierre 		snprintf(name, maxLength, B_TRANSLATE("%lld bytes"),
438d779aa8SPhilippe Saint-Pierre 			byteCount);
44973f8e21SSiarzhuk Zharski 	} else {
45973f8e21SSiarzhuk Zharski 		int i = 0;
46973f8e21SSiarzhuk Zharski 		while (byteCount >= scale[i].limit)
47973f8e21SSiarzhuk Zharski 			i++;
48973f8e21SSiarzhuk Zharski 
498d779aa8SPhilippe Saint-Pierre 		snprintf(name, maxLength, scale[i].format,
508d779aa8SPhilippe Saint-Pierre 			byteCount / scale[i].divisor);
51973f8e21SSiarzhuk Zharski 	}
52973f8e21SSiarzhuk Zharski }
53de23995aSStephan Aßmus 
54de23995aSStephan Aßmus int
55de23995aSStephan Aßmus main()
56de23995aSStephan Aßmus {
57de23995aSStephan Aßmus 	App app;
58de23995aSStephan Aßmus 	app.Run();
59de23995aSStephan Aßmus 	return 0;
60de23995aSStephan Aßmus }
61973f8e21SSiarzhuk Zharski 
62