[SETUPLIB][USETUP] Factor out the usage of FS provider structures.
[reactos.git] / base / setup / usetup / format.c
1 /*
2 * ReactOS kernel
3 * Copyright (C) 2003 ReactOS Team
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 /* COPYRIGHT: See COPYING in the top level directory
20 * PROJECT: ReactOS text-mode setup
21 * FILE: base/setup/usetup/format.c
22 * PURPOSE: Filesystem format support functions
23 * PROGRAMMER: Casper S. Hornstrup (chorns@users.sourceforge.net)
24 */
25
26 /* INCLUDES *****************************************************************/
27
28 #include "usetup.h"
29
30 #define NDEBUG
31 #include <debug.h>
32
33 static PPROGRESSBAR FormatProgressBar = NULL;
34
35 /* FUNCTIONS ****************************************************************/
36
37 static
38 BOOLEAN
39 NTAPI
40 FormatCallback(
41 IN CALLBACKCOMMAND Command,
42 IN ULONG Modifier,
43 IN PVOID Argument)
44 {
45 switch (Command)
46 {
47 case PROGRESS:
48 {
49 PULONG Percent;
50
51 Percent = (PULONG)Argument;
52 DPRINT("%lu percent completed\n", *Percent);
53
54 ProgressSetStep(FormatProgressBar, *Percent);
55 break;
56 }
57
58 /*case OUTPUT:
59 {
60 PTEXTOUTPUT Output;
61 output = (PTEXTOUTPUT) Argument;
62 DPRINT("%s\n", output->Output);
63 break;
64 }*/
65
66 case DONE:
67 {
68 /*PBOOLEAN Success;*/
69 DPRINT("Done\n");
70
71 /*Success = (PBOOLEAN)Argument;
72 if (*Success == FALSE)
73 {
74 DPRINT("FormatEx was unable to complete successfully.\n\n");
75 }*/
76 break;
77 }
78
79 default:
80 DPRINT("Unknown callback %lu\n", (ULONG)Command);
81 break;
82 }
83
84 return TRUE;
85 }
86
87
88 NTSTATUS
89 FormatPartition(
90 IN PUNICODE_STRING DriveRoot,
91 IN PCWSTR FileSystemName,
92 IN BOOLEAN QuickFormat)
93 {
94 NTSTATUS Status;
95
96 FormatProgressBar = CreateProgressBar(6,
97 yScreen - 14,
98 xScreen - 7,
99 yScreen - 10,
100 10,
101 24,
102 TRUE,
103 MUIGetString(STRING_FORMATTINGDISK));
104
105 ProgressSetStepCount(FormatProgressBar, 100);
106
107 Status = FormatFileSystem_UStr(DriveRoot,
108 FileSystemName,
109 FMIFS_HARDDISK, /* MediaFlag */
110 NULL, /* Label */
111 QuickFormat, /* QuickFormat */
112 0, /* ClusterSize */
113 FormatCallback); /* Callback */
114
115 DestroyProgressBar(FormatProgressBar);
116 FormatProgressBar = NULL;
117
118 DPRINT("FormatPartition() finished with status 0x%08lx\n", Status);
119
120 return Status;
121 }
122
123 /* EOF */