revert between 56095 -> 55830 in arch
[AROS.git] / workbench / tools / HDToolBox / main.c
blob530af2a3bf0314c143e712dd3ac94339af67833f
1 /*
2 Copyright © 1995-2012, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <proto/alib.h>
7 #include <proto/exec.h>
8 #include <proto/dos.h>
9 #include <proto/intuition.h>
11 #include <exec/memory.h>
12 #include <exec/nodes.h>
14 #include <stdio.h>
15 #include <stdlib.h>
17 #include "devices.h"
18 #include "error.h"
19 #include "gui.h"
20 #include "hdtoolbox_support.h"
21 #include "locale.h"
22 #include "partitions.h"
23 #include "partitiontables.h"
24 #include "platform.h"
25 #include "ptclass.h"
26 #include "prefs.h"
28 #include "debug.h"
30 extern struct ListNode root;
32 struct IntuitionBase *IntuitionBase = NULL;
33 struct GfxBase *GfxBase = NULL;
34 struct PartitionBase *PartitionBase = NULL;
36 LONG initEnv(char *device)
38 LONG retval;
40 D(bug("[HDToolBox] initEnv('%s')\n", device));
42 if (!InitListNode(&root, NULL))
43 return ERR_MEMORY;
44 IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 37);
45 if (!IntuitionBase)
46 return ERR_INTUI;
47 GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 37);
48 if (!GfxBase)
49 return ERR_GFX;
50 PartitionBase = (struct PartitionBase *)OpenLibrary("partition.library", 1);
51 if (!PartitionBase)
52 return ERR_PARTITION;
54 retval = initGUI();
55 if (retval != ERR_NONE)
56 return retval;
58 LoadPrefs("ENV:hdtoolbox.prefs");
60 return ERR_NONE;
63 void uninitEnv()
65 D(bug("[HDToolBox] uninitEnv()\n"));
67 deinitGUI();
68 freeDeviceList();
70 if (PartitionBase)
71 CloseLibrary((struct Library *)PartitionBase);
72 if (GfxBase)
73 CloseLibrary((struct Library *)GfxBase);
74 if (IntuitionBase)
75 CloseLibrary((struct Library *)IntuitionBase);
78 void waitMessage()
80 ULONG sigs = 0;
82 D(bug("[HDToolBox] waitMessage()\n"));
84 while (!QuitGUI(&sigs))
86 if (sigs)
88 sigs = Wait(sigs | SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_D);
89 if (sigs & SIGBREAKF_CTRL_C)
90 break;
91 if (sigs & SIGBREAKF_CTRL_D)
92 break;
97 int main(int argc, char **argv)
99 ULONG error;
100 char *device;
102 D(bug("[HDToolBox] main()\n"));
104 InitLocale("System/Tools/HDToolBox.catalog", 2);
105 device = argc > 1 ? argv[1] : NULL;
106 if ((error=initEnv(device))==ERR_NONE)
108 waitMessage();
110 else
111 printf("Error %d\n", (int)error);
113 uninitEnv();
114 CleanupLocale();
115 return 0;