]> git.saurik.com Git - hfs.git/blob - fsck_hfs/docs/fsck_gui_interface_design.rtf
Make CreateFileByName() overwrite existing files.
[hfs.git] / fsck_hfs / docs / fsck_gui_interface_design.rtf
1 {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf330
2 {\fonttbl\f0\fnil\fcharset77 LucidaGrande-Bold;\f1\fnil\fcharset77 LucidaGrande;}
3 {\colortbl;\red255\green255\blue255;\red0\green0\blue255;\red255\green0\blue0;}
4 {\info
5 {\author Puja Gupta}
6 {\*\company Apple Computer}}\margl1440\margr1440\vieww17160\viewh15500\viewkind0
7 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
8
9 \f0\b\fs36 \cf0 \ul \ulc0 FSCK - GUI CLIENT INTERFACE DESIGN
10 \fs24 \
11 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
12
13 \f1\b0 \cf0 \ulnone Last Modified: 04/06/2006.\
14 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
15 \cf0 \
16 The documents uses fsck collectively for any file system check programs like fsck_hfs, fsck_msdos, fsck_ufs, etc. Any GUI client like Disk Utility that displays the output of fsck in GUI or parses the GUI output of fsck is termed as GUI or client.\
17 \
18 \
19 \
20 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
21
22 \f0\b\fs32 \cf0 \ul AIMS
23 \fs24 \
24 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
25
26 \f1\b0 \cf0 \ulnone This document describes the design of interaction interface between fsck and any GUI client (like Disk Utility or other program). The aims for this change are:\
27 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
28 \cf0 \
29 1. Provide flexibility in fsck to add/change message strings in the fsck output after the project's UI freeze.\
30 a. Make it possible to hide extra details of disk verify/repair operation from normal user.\
31 b. Provide all details of disk verify/repair\'caoperation for expert users, developers, AppleCare when required.\
32 \
33 2. Provide a sustainable and extensible interface for communication between fsck and client.\
34 a. Standardize the message format sent from fsck to client.\
35 b. Provide more information like type of operation, name of corruption files in the message being sent from fsck to client. c. Provide flexibility to add a new message type or information from fsck to client easily.\
36 \
37 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
38 \cf0 3. Provide an output that other tools can parse.\
39 a. Standardized output for general messages (verifying, repairing, success/fail result, etc.)\
40 b. Tools need not know the file system type in order to parse the output\
41 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
42 \cf0 \
43 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
44 \cf0 4. Be able to support file systems whose fsck behaves differently than fsck_hfs.\
45 a. Make their messages localizable in Disk Utility\
46 b. Make their output look more like fsck_hfs (user interface consistency)\
47 c. Allow ] reporting\
48 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
49 \cf0 \
50 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
51
52 \f0\b \cf0 Description
53 \f1\b0 \
54 If we look closely, requirement (1a) contradicts (1b).\'ca Therefore we propose a multi-level fsck GUI output which will tag every message from fsck with a verbosity level. This is described in more details later with example.\cf2 \
55 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
56 \cf0 \
57 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
58 \cf0 The design aims towards an independent interface between fsck and client which does not require string comparison and provide more information about the type of message being sent from fsck. Due to ease of extensibility, we use XML format. The output generated will be well-formed and valid XML format. If a client wants to display the output of fsck in realtime, it will have to parse the XML output in real time. Note that all fsck will generate this output on a -g option (GUI option).\
59 \
60 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
61 \cf0 fsck will generate an XML output with a standard set of XML tags for achieving a sustainable and extensible communication interface. All fscks will generate similar XML output which the client will be able to parse. If a new message is added to fsck which belongs to existing message type, no change in the client code will be required. If a new message is added to fsck which does not belong to existing message types, a new XML tag will be created and the client will have to change to recognize it. \
62 \
63 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
64 \cf0 Aims (3) and (4) are bonus as (3) is similar to aim (2) and will be achieved if we fix (2). Aim (4) deals more with standardizing multiple fscks (fsck_hfs, fsck_msdos, fsck_ufs, etc). In the process of converting fscks to the new format described in this design document, we will be achieving (4) (except for 4c).\
65 \
66 \
67 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
68
69 \f0\b\fs32 \cf0 \ul MUTLI-LEVEL FSCK GUI OUTPUT
70 \fs30 \
71 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
72
73 \f1\b0\fs24 \cf0 \ulnone All messages sent by fsck to client will have a verbosity level associated with it. The verbosity level allows a client to filter its output; for example, it might choose to only show level 0 messages to a naive user, but log messages of all levels.\cf2 \
74 \cf0 \
75 Currently there will be two verbosity levels of client output:\
76 a. level 0 or default level and \
77 b. level 1 or expert level.\
78 \
79 Verbosity level 0 includes generic status messages such as verify, repair, success and fail. The text of the message displayed in level 0 will be consistent across all volume types. Each message has a unique positive number so that engineering or technical support can identify the message even if it has been localized. The message numbers at level 0 will be consistent across all volume types. Verbosity level 1 provides details about the verify and repair operation including error messages. Every volume format will define the message text and message number displayed in level 1 independent from other volume formats. \
80 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
81
82 \f0\b \cf0 \ul \
83 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
84
85 \fs28 \cf0 VERBOSITY LEVEL 0:
86 \f1\b0\fs24 \ulnone \
87 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
88
89 \f0\b \cf0 What strings must be in level 0?
90 \f1\b0 \
91 1. Strings that indicate generic status of verify/repair operation and its final result independent of file system type.\
92 2. Strings that display information about how repair operation has changed the user-level view of the file system and its data. \
93 3. Strings that make sense to grandma-like users.\
94 \
95
96 \f0\b Where do level 0 strings exist?
97 \f1\b0 \
98 All level 0 strings are pre-defined, and all fscks must use these pre-defined strings for all level 0 output. No other strings must be identified as level 0. Any given fsck may output only a subset of the level 0 strings. Similar to level 0 strings, level 0 message numbers are also pre-defined and all fscks must use these pre-defined values.\
99 \
100
101 \f0\b What are the valid message numbers for level 0 strings?
102 \f1\b0 \
103 All level 0 strings will have pre-defined values for message numbers. The message numbers in range 1-99 are reserved for level 0 strings. \
104 \
105 The pre-defined level 0 strings and message numbers will be located in common location and will be localized.\
106 \
107
108 \f0\b Which are the common strings?
109 \f1\b0 \
110 "Checking volume.",\
111 \'ca \'ca "Rechecking volume.",\
112 \'ca "Repairing volume.",\
113 \'ca \'ca "The volume appears to be OK.",\
114 \'ca \'ca "The volume was repaired successfully.", \
115 \'ca \'ca "The volume could not be verified completely.",\
116 "The volume could not be verified completely and can not be repaired.",\
117 "The volume was found corrupt and can not be repaired.",\
118 "The volume was found corrupt and needs to be repaired.",\
119 "The volume could not be repaired.", \
120
121 \f0\b
122 \f1\b0 "The volume cannot be repaired when it is in use.",\
123 "The volume cannot be verified when it is in use.",\cf3 \
124 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
125 \cf0 "%s may be damaged.",\
126 "%s could not be repaired.",\
127 "Look for missing items in %s directory.",\
128 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
129
130 \f0\b \cf3
131 \f1\b0 \cf0 "Look for links to corrupt files in %s directory."\
132 \
133 (Note: We can come up with user-friendly versions of the above strings).\
134 \
135 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
136
137 \f0\b \cf0 Note:
138 \f1\b0 \
139 1. The above messages are classified in different types (described later).\
140 2. All\'cafsck must print "Repairing volume" in level 0 when it starts the first repair on the disk. \
141 3. The parameter in the following messages must be a file system object and of type "path" (described later):\
142 "%s may be damaged." \
143 "%s could not be repaired." \
144 4. The set of pre-defined strings do not have a parameter for volume name in its strings because all file systems do not require a volume to have a volume name. This means that we will have to support two incarnations of every strings - one with volume name and one without volume name. Therefore we choose not to display volume name in level 0 strings. \
145 \
146 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
147 \cf0 \ul Example:\ulnone The new output in verbosity level 0 in client will be:\
148 Checking volume.\
149 File /Users/foo/myfile may be damaged.\
150 File /Users/bar/otherfile may be damaged.\
151 Repairing volume.\
152 Look for links to corrupt files in DamagedFiles directory.\
153 Rechecking volume.\
154 The volume was repaired successfully.\
155 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
156
157 \f0\b \cf3 \
158 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
159
160 \fs28 \cf0 \ul VERBOSITY LEVEL 1:
161 \f1\b0\fs24 \ulnone \
162 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
163
164 \f0\b \cf0 What strings must be in level 1?
165 \f1\b0 \
166 1. All file system specific messages for detailed information about verify/repair operation as well as error messages.\
167 \
168 Level 1 includes messages like verify, repair, error, debug, etc. The text of message will be chosen by fsck implementation and will be independent across different file system types. Every unique message string displayed in this level will have a unique number associated with it. Every implementation of fsck can choose any unique number independently. Therefore a message number 234 in fsck_hfs might not mean the same message for message number 234 in fsck_msdos. But once a message number is defined, its meaning must not be changed in future versions. The location of level 1 strings and message numbers of every file system is left to individual fsck implementation.\
169 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
170 \cf3 \
171 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
172 \cf0 The strings displayed in level 0 do not support volume name. All fsck must send details about fsck and corresponding file system it is verifying/repairing including volume name to the client. A message number 100 is reserved for this message. This is described in more detail in message type INFORMATION.\
173 \
174 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
175
176 \f0\b \cf0 What are the valid message numbers for level 1 strings?
177 \f1\b0 \
178 Numbers 1-99 are reserved for level 0 strings. Message number 100 is reserved for fsck information message (described later). fsck can choose a positive number greater than 100 for level 1 strings.\
179 \
180 Example: Listed below is an example fsck output. The message string is prefixed by the message number. Note that the numbers displayed are currently representative numbers and may not be same after implementation. Level 1 messages are distinguished from level 0 message with an extra tab on the output line. Note that this is not the literal fsck output and indentation is only to distinguish between different levels. It does not represent the way in which fsck or client should display their output.\cf2 \
181 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
182 \cf0 \
183 045 Checking volume.
184 \f0\b \
185
186 \f1\b0 101 Checking HFS Plus volume.\
187 102 Checking Extents Overflow file.\
188 103 Checking Catalog file.\
189 500 Incorrect block count for file 1\
190 559 (It should be 1266 instead of 1272) \
191 511 Overlapped extent allocation (file 1203 /Users/foo/myfile)\
192 055 File /Users/foo/myfile may be damaged.\
193 511 Overlapped extent allocation (file 1203 /Users/bar/otherfile)\
194 055 File /Users/foo/myfile may be damaged.\
195 104 Checking Catalog hierarchy.\
196 106 Checking volume bitmap.\
197 556 Volume Bit Map needs minor repair\
198 108 Checking volume information.\
199 554 Invalid volume free block count\
200 559 (It should be 235411 instead of 235405)\
201 600 Verify Status: VIStat = 0xa800, ABTStat = 0x0000 EBTStat = 0x0000 CBTStat = 0x0000 CatStat = 0x0020\
202 013 Repairing volume.\
203 019 Rechecking volume.\
204 101 Checking HFS Plus volume.\
205 102 Checking Extents Overflow file.\
206 103 Checking Catalog file.\
207 104 Checking Catalog hierarchy.\
208 106 Checking volume bitmap.\
209 108 Checking volume information.\
210 016 The volume was repaired successfully.\
211 \
212 \
213 \
214 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
215
216 \f0\b\fs32 \cf0 \ul XML COMMUNICATION INTERFACE
217 \f1\b0\fs24 \ulnone \
218 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
219 \cf0 fsck will generate an XML output only when called with "-g" option for GUI output.\cf2 \cf0 A message is a set of information like message type, message string, message number, etc which describes state/action of fsck. The XML chosen will be the standard plist ("Property List") uncompressed format. Each message will begin with "<plist version=\\"1.0\\">", and each message will end with "</plist>\\n". Newlines may appear between the two tags.\
220 \
221 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
222
223 \f0\b\fs28 \cf0 \ul XML KEYS
224 \fs24 \ulnone \
225 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
226
227 \f1\b0 \cf0 The producer and consumer for XML format must agree on the XML tags (or keys) that they recognize. These keys will be provided as a part of common header file in /usr/local/include/fsck_common.h.\
228 \
229 \pard\pardeftab720\ql\qnatural
230 \cf0 The output consists of a single <plist> element which shall contain a single <dict> (dictionary) element.\'ca Inside that element are one or more <key> elements. Messages always have one key with the name "fsck_type." The messages describing percent progress have a value of "fsck_progress" for the "fsck_type" key. All other types of messages have several keys, including "verbosity", "fsck_msg_number", "fsck_msg_string" and an optional "parameter".\'ca The parameter element has a value component that is an array; each element of the array may be a <string> or <integer>, or a <dict> with a single key-value pair.\
231 \
232 Details about different keys are as follows:\
233 \
234 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
235
236 \f0\b \cf0 fsck_type
237 \f1\b0 \
238 This key describes the type of the message being sent. Different types of messages are described in detail later.\
239 This key-value pair is required in a message.\
240 \
241
242 \f0\b fsck_progress\
243 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
244
245 \f1\b0 \cf0 This key describes the percentage progress of the verify/repair operation.\cf3 \cf0 The value for this key indicates a non-negative integer with a value between 0 and 100.\
246 This key is the only key that must be present in the progress indicator messages (except "type") and must exist only as child of "message". This key must not exist in any other type of messages. \
247 \
248 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
249
250 \f0\b \cf0 fsck_msg_string \
251 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
252
253 \f1\b0 \cf0 This key describes the string that needs to be displayed in the client. Some message strings will require parameter substitutions which is described in detail later. The associated value is a <string> object.\
254 \
255 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
256
257 \f0\b \cf0 fsck_msg_number \
258 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
259
260 \f1\b0 \cf0 This key describes the message number associated with the "msg_string" in the message. This message number is an unique unsigned 32-bit integer for every unique string. Every implementation of fsck can choose any unique number independently. All message numbers sent by fsck will be positive integer. Therefore a message number 234 in fsck_hfs might not mean the same message for message number 234 in fsck_msdos. The associated value is an <integer> object.\
261 \
262 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
263
264 \f0\b \cf0 fsck_verbosity
265 \f1\b0 \
266 This key describes the verbosity level in which the current message must be displayed in the client. This key-value pair must be sent by fsck with an exception of messages for percentage progress indicator. The verbosity level will be described as an <integer> object.\
267 \
268
269 \f0\b parameters
270 \f1\b0 \
271 fsck does not localize strings itself but sends the strings in the same format as they exist in localized files (i.e. without parameters) to the client. This key describes the parameters to substitute instead of "%@" or "%n$@" where 'n' is the parameter number generated in localized strings in the message strings in "msg_string". A message string can have multiple parameters therefore the values are sent in the order they must be replaced. The value associated with this key is an <array>; the elements of the array may be <string> or <integer>, or they may be <dict> objects with a single <key> and a corresponding value of either a <string> or an <integer>.\
272 This key is optional; if present, it may contain no elements.\
273 \
274
275 \f0\b fstype
276 \f1\b0 \
277 This key describes the type of file system being checked by fsck as a UTF-8 string. The value can also specify a sub-type of file system to provide details. For example, fsck_hfs can send the values for this key as "HFS+", "Journaled HFS+", "Case-sensitive Journaled HFS+", etc. Every fsck implementation can choose the text of the string to be displayed.\
278 This key-value pair is optional.\
279 \
280 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
281
282 \f0\b \cf0 \ul XML FORMAT\
283 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
284
285 \f1\b0 \cf0 \ulnone The output generated by fsck will be well-formed and valid plist XML format. If a client wants to display the output of fsck in realtime, it will have to parse the XML output in real time. The start tag for each individual message will be "<plist version=\\"1.0\\">"; the end tag will be "</plist>\\n"; there may be zero more newlines between the tags. There will be only one newline between two different messages and the client must not assume any extra newlines (i.e. between </plist> and the next <plist version=\\"1.0\\">).\
286 \
287 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
288
289 \f0\b \cf0 \ul SUMMARY OF REQUIRED AND OPTIONAL KEY-VALUE PAIRS
290 \f1\b0 \ulnone \
291 Listed below are the required key-value pairs in the messages. Any other key-value pair are optional.
292 \f0\b \
293 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
294
295 \f1\b0 \cf0 \ul \
296 For all messages:\ulnone \
297 fsck_type\
298 \ul \
299 For percent progress indicator messages:\
300 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
301 \cf0 \ulnone fsck_type\
302 parameters\
303 \
304 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
305 \cf0 \ul For all other messages:\ulnone \
306 fsck_msg_string\
307 fsck_msg_number\
308 fsck_verbosity\
309 \
310 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
311
312 \f0\b \cf0 \ul SUMMARY OF RELATIONSHIP BETWEEN DIFFERENT KEYS
313 \f1\b0 \ulnone \
314 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
315 \cf0 \ul For percent progress indicator messages:\
316 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
317 \cf0 \ulnone plist\
318 |- dict\
319 |- fsck_type\
320 |- parameters\
321 \
322 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
323 \cf0 \ul For all other messages:\ulnone \
324 plist\
325 |- dict\
326 |- fsck_type\
327 |- fsck_verbosity\
328 |- fsck_msg_number\
329 |- fsck_msg_string\
330 |- parameters\
331 \
332 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
333
334 \f0\b\fs32 \cf0 \ul MESSAGE TYPES
335 \fs24 \ulnone \
336 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
337
338 \f1\b0 \cf0 The messages sent from fsck can be classified into eight types. A message can only belong to one message type. The sequence of messages sent by fsck to client is independent of the type of message. Client must not expect any particular order of messages, like a repair message always preceded by a verify message. \
339 \
340 fsck must classify the messages based on the following guildelines and must send correct message type to the client. For example, fsck must never send any repair message to client if no repairs were ever performed on the disk.\
341 \
342 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
343
344 \f0\b \cf0 1. VERIFY\
345 \pard\pardeftab720\ql\qnatural
346
347 \f1\b0 \cf0 \'ca\'ca \'caThis type indicates that fsck is performing a read-only operation to either check or to prepare to check the file system. \'ca\
348 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
349 \cf0 Some fsck support option "-n" and "-y" to force answers like "no" and "yes" for any intermediate questions asked during verify operation. This message type is independent of these options and must only be sent for message string describing read-only check. \
350 This is an optional message type as fsck implementation can choose to repair a volume directly. This message type can exist in all verbosity levels.\
351 \
352 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
353 \cf0 Example:\
354 <plist version=\\"1.0\\">\
355 <dict>\
356 <key>fsck_type</key> <string>VERIFY</string>\
357 <key>fsck_verbosity</key> <integer>0</integer>\
358 <key>fsck_msg_number</key> <integer> 101 </integer>\
359 <key>fsck_msg_string</key> <string>Checking volume.</string>\
360 </dict>\
361 </plist>\
362 \
363 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
364
365 \f0\b \cf0 2. REPAIR\
366 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
367
368 \f1\b0 \cf0 This type indicates that fsck is writing to file system to repair a corruption. \
369 This type does not describe messages when fsck is writing to file system for any other reason than repairing the file system. These type of messages are classified as information messages (described later). For example, if the disk has a "last verified date" that is updated even if no problems are found.\'ca Or a journal might be replayed, and no errors are subsequently found.\
370 Some fsck support option "-n" and "-y" to force answers like "no" and "yes" for any intermediate questions asked during repair operation. This message type is independent of these options and must only be sent for message string describing write operation on the file system. All\'cafsck must print "Repairing volume" in verbosity level 0 when it starts the first repair on the disk.\
371 This is an optional message type as repairing a file system is not required always. This message type can exist in all verbosity levels.\
372 \
373 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
374 \cf0 Example:\
375 <plist version=\\"1.0\\">\
376 <dict>\
377 <key>fsck_type</key> <string>REPAIR</string>\
378 <key>fsck_verbosity</key> <integer>0</integer>\
379 <key>fsck_msg_number</key> <integer>113</integer>\
380 <key>fsck_msg_string</key><string>Repairing volume.</string>\
381 </dict>\
382 </plist>\
383 \
384 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
385
386 \f0\b \cf0 3. SUCCESS\
387 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
388
389 \f1\b0 \cf0 This type indicates one of the following:\
390 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
391 \cf0 1. verify operation succeeded and found that the volume is clean.\
392 2. repair operation has repaired the volume successfully.\
393 The last message output by fsck must be of type SUCCESS or FAIL, to indicate whether the verify or repair operation completed successfully.\'ca No other message may be of type SUCCESS or FAIL. This message type must have verbosity level 0.\
394 \
395 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
396 \cf0 Example:\
397 <plist version=\\"1.0\\">\
398 <dict>\
399 <key>fsck_type</key><string>SUCCESS</string>\
400 <key>fsck_verbosity</key><integer>0</integer>\
401 <key>fsck_msg_number</key> <integer>116</integer>\
402 <key>fsck_msg_string</key><string>Volume was repaired successfully.</string>\
403 </dict>\
404 </plist>\
405 \
406 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
407
408 \f0\b \cf0 4. FAIL
409 \f1\b0 \
410 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
411 \cf0 This type indicates one of the following:\
412 1. fsck was told to verify but not repair and has found that the volume is corrupt\
413 2. verify operation was not completed due to error and fsck cannot determine if the volume is clean or corrupt.\
414 3. repair operation has failed.\
415 The last message output by fsck must be of type SUCCESS or FAIL, to indicate whether the verify or repair operation completed successfully.\'ca No other message may be of type SUCCESS or FAIL. This message type must have verbosity level 0.\
416 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
417 \cf0 \
418 Example:\
419 <plist version=\\"1.0\\">\
420 <dict>\
421 <key>fsck_type</key> <string>FAIL</string>\
422 <key>fsck_verbosity</key> <integer>0</integer>\
423 <key>fsck_msg_number</key> <integer>113</integer>\
424 <key>fsck_msg_string</key><string>Volume needs to be repaired.</string>\
425 </dict>\
426 </plist>\
427 \
428 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
429
430 \f0\b \cf0 5. ERROR\
431 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
432
433 \f1\b0 \cf0 This type indicates a message about one of the following:\
434 1. type of corruption causing fsck to conclude that the file system is corrupt\
435 2. type of condition that causes verify/repair operation to fail.\
436 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
437
438 \f0\b \cf0
439 \f1\b0 This is an optional message. This message type must never have verbosity level 0.\
440
441 \f0\b \
442 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
443
444 \f1\b0 \cf0 Example:\
445 <plist version=\\"1.0\\">\
446 <dict>\
447 <key>fsck_type</key><string>ERROR</string>\
448 <key>fsck_verbosity</key><integer>1</integer>\
449 <key>fsck_msg_number</key><integer>556</integer>\
450 <key>fsck_msg_string</key> <string>Volume Bit Map needs minor repair.</string>\
451 </dict>\
452 </plist>\
453 \
454 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
455
456 \f0\b \cf0 7. DAMAGEINFO\
457 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
458
459 \f1\b0 \cf0 This type gives more information about one of the following:\
460 1. name/path of the file system objects that verify operation found corrupt\
461 2. name/path of the file system objects that repair operation repaired/could not repair.\
462 3. more information about how repair operation has changed user's view of file system and/or its data.\
463 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
464
465 \f0\b \cf0
466 \f1\b0 This is an optional message. This message type must always have verbosity level 0.\
467 \
468 Example:\
469 <plist version=\\"1.0\\">\
470 <dict>\
471 <key>fsck_type</key> <string>DAMGEINFO</string>\
472 <key>fsck_verbosity</key> <integer>0</integer>\
473 <key>fsck_msg_number</key> <integer>657</integer>\
474 <key>fsck_msg_string</key> <string>File %1$@ may be damaged.</string>\
475 <key>parameters</key>\
476 <array>\
477 <string>/Users/foo/myfile</string>\
478 </array>\
479 </dict>\
480 </plist>\
481
482 \f0\b \
483 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
484 \cf0 7. INFORMATION\
485 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
486
487 \f1\b0 \cf0 This type indicates one of the following:\
488 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
489 \cf0 1. information about an error message.\
490 2. information/result of any fsck operation or any of its intermediate state.\
491 This type includes messages when fsck is writing to file system for any other reason than repairing the file system. For example, if the disk has a "last verified date" that is updated even if no problems are found.\'ca Or a journal might be replayed, and no errors are subsequently found.\
492 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
493
494 \f0\b \cf0
495 \f1\b0 This is an optional message. This message type must never have verbosity level 0.\
496
497 \f0\b \
498 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
499
500 \f1\b0 \cf0 Example:\
501 <plist version=\\"1.0\\">\
502 <dict>\
503 <key>fsck_type</key><string>INFORMATION</string>\
504 <key>fsck_verbosity</key> <integer>1</integer>\
505 <key>fsck_msg_number</key> <integer>559</integer>\
506 <key>fsck_msg_string</key> <string>(It should be %1$% instead of %2$@)</string>\
507 <key>parameters</key>\
508 <array>\
509 <integer>1266</integer>\
510 <integer>1272</integer>\
511 </dict>\
512 </plist>\
513 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
514
515 \f0\b \cf0 \
516
517 \f1\b0 All fsck must send an information message with verbosity level 1 and message number 100 to summarize details about fsck verify/repair operation to facilitate debugging. The information sent will be file used for verify/repair, the version number for that file, name of the volume, if available, and the type of file system. There is no specific requirement about the order of occurrence of this message but it must be sent as early as possible in the verify/repair operation i.e. as soon as fsck gets all information that needs to be sent. All fsck must send the following string: \
518 \
519 "Using %1$@ (version %2$@) for checking volume %3$@ of type %4$@." \
520 where,\
521 the first parameter is the name of binary file used for verify/repair operation, \
522 the second parameter is the source number used to generate the binary (like diskdev_cmds-332.5, msdosfs-90), \
523 the third parameter is the name of the volume, and \
524 the last parameter is the type of file system (like Journaled HFS+, MSDOS (FAT16), etc). \
525 \
526 All fsck must use the same message number 100 for this string. If fsck can not obtain one or more information, it should send NULL value (i.e. just start and end tags) for that parameter.\
527 \
528 Example:\
529 <plist version=\\"1.0\\">\
530 <dict>\
531 <key>fsck_type</key><string>INFORMATION</string>\
532 <key>fsck_verbosity</key> <integer>1</integer>\
533 <key>fsck_msg_number</key> <integer>100</integer>\
534 <key>fsck_msg_string</key> <string> Using %1$@ (version %2$@) for checking volume %3$@ of type %4$@.</string>\
535 <key>parameters</key>\
536 <array>\
537 <string>fsck_hfs</string>\
538 <string>diskdev_cmds-334.3</string>\
539 <string>MyVol</string>\
540 <string>journaled HFS+</string>\
541 </array>\
542 </dict>\
543 </plist>\
544 \
545 <plist version=\\"1.0\\">\
546 <dict>\
547 <key>fsck_type</key><string>INFORMATION</string>\
548 <key>fsck_verbosity</key> <integer>1</integer>\
549 <key>fsck_msg_number</key> <integer>100</integer>\
550 <key>fsck_msg_string</key> <string> Using %1$@ (version %2$@) for checking volume %3$@ of type %4$@.</string>\
551 <key>parameters</key>\
552 <array>\
553 <string>fsck_msdos</string>\
554 <string>msdosfs-90</string>\
555 <string></string>\
556 <string>MSDOS (FAT16)</string>\
557 </array>\
558 </dict>\
559 </plist>\
560
561 \f0\b \
562 8. fsck_progress
563 \f1\b0 \
564 This type gives more information about the percentage progress of verify/repair operation.\
565 \
566 Example:\
567 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
568 \cf0 \
569 <plist version=\\"1.0\\">\
570 <dict>\
571 <key>fsck_type</key> <string>fsck_progress</string>\
572 <key>parameter</key>\
573 <array>\
574 <integer>70</integer>\
575 </array>\
576 </dict>\
577 </plist>\
578 \
579 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
580
581 \f0\b \cf0 \ul MESSAGE TYPES OF PRE-DEFINED (LEVEL 0) MESSAGES
582 \f1\b0 \ulnone \
583 VERIFY
584 \f0\b \ul \
585 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
586
587 \f1\b0 \cf0 \ulnone "Checking volume.",\
588 "Rechecking volume.",\
589 \
590 REPAIR\
591 \'ca "Repairing volume.",\
592 \
593 SUCCESS\
594 \'ca \'ca "The volume appears to be OK.",\
595 \'ca \'ca "The volume was repaired successfully.", \
596 \
597 FAIL\
598 \'ca \'ca "The volume could not be verified completely.",\
599 "The volume could not be verified completely and can not be repaired.",\
600 "The volume was found corrupt and can not be repaired."\
601 "The volume was found corrupt and needs to be repaired."\
602 "The volume could not be repaired.", \
603 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
604
605 \f0\b \cf0
606 \f1\b0 "The volume cannot be repaired when it is in use."\
607 "The volume cannot be verified when it is in use."\
608 \
609 DAMAGEINFO\cf3 \
610 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
611 \cf0 "%s may be damaged." \
612 "%s could not be repaired." \
613 "Look for missing items in %s directory.", \
614 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
615
616 \f0\b \cf3
617 \f1\b0 \cf0 "Look for links to corrupt files in %s directory."
618 \f0\b \cf2 \
619 \
620 \
621 \
622 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
623
624 \fs32 \cf0 \ul SUMMARY
625 \fs24 \cf2 \ulnone \
626 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
627
628 \f1\b0 \cf0 TBD\
629 \
630 \
631 \
632 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
633
634 \f0\b\fs32 \cf0 \ul HANDLING UNKNOWN KEY-VALUES
635 \fs24 \
636 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
637
638 \f1\b0 \cf0 \ulnone If the client receives an unknown key, it should ignore it in its current implementations but enhance its XML parser to recognize that key.\cf3 \cf0 \
639 \
640 If the client receives an unknown message type and the message has "fsck_msg_string", it should display the "fsck_msg_string" (with parameter substitution, if any) in the verbosity level specified with the message.\
641 \
642 If the clients receives unknown key which is child of "parameters", the client consider it as "string". \
643 \
644 \
645 \
646 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
647
648 \f0\b\fs32 \cf0 \ul HANDLING UNSUPPORTED FSCK
649 \fs24 \
650 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
651
652 \f1\b0 \cf0 \ulnone Some fsck might choose not send messages to client in the new XML format described in this document. This can be because of any reason like phasing out an implementation, development of new fsck, etc. An implementation of fsck under such conditions must send messages to the client as UTF-8 strings which client must display in its UI. The client must handle such unsupported fscks gracefully.\
653 \
654 \
655 \
656 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
657
658 \f0\b\fs32 \cf0 \ul FUTURE EXTENSIBILITY
659 \fs24 \
660 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
661
662 \f1\b0 \cf0 \ulnone If a client requires additional data from fsck in future which is not accommodated by the existing keys and/or message types, fsck and client can establish a known key and/or message type. The client will have to change to recognize the new key and/or message type. Only relevant fsck implementations will have to change to generate the new key and/or message type.\
663 \
664 Since fsck is the producer of the XML data, it may add new keys and/or message types. It is the responsibility of fsck to update the common header file, update this design document and inform clients about the changes.\
665 \
666 \
667 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
668
669 \f0\b\fs32 \cf0 \ul OPEN ISSUES
670 \f1\b0\fs24 \
671 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
672 \cf0 \ulnone 1. The strings displayed in verbosity level 1 are more information strings about verify/repair operation. These strings are very file-system specific and can include lot of debugging information. We suggest that these strings should not be localized. This will also enable fsck to add strings independent of localization deadlines.\
673 \
674 \
675 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
676
677 \f0\b\fs32 \cf0 \ul SAMPLE OUTPUT
678 \f1\b0\fs24 \
679 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
680 \cf0 \ulnone The output of fsck is a series of plists. A sample output is shown below:\
681 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
682 \cf0 \
683 <plist version=\\"1.0\\">\
684 <dict>\
685 <key>fsck_type</key> <string>VERIFY</string>\
686 <key>fsck_verbosity</key> <integer>0</integer>\
687 <key>fsck_msg_number</key> <integer>101</integer>\
688 <key>fsck_msg_string</key><string>Checking volume.</string>\
689 </dict>\
690 </plist>\
691 <plist version=\\"1.0\\">\
692 <dict>\
693 <key>fsck_type</key> <string>INFORMATION</string>\
694 <key>fsck_verbosity</key> <integer>1</integer>\
695 <key>fsck_msg_number</key> <integer>100</integer>\
696 <key>fsck_msg_string</key><string>Using %1$@ (version %2$@) for checking volume %3$@ of type %4$@.</string>\
697 <key>parameters</key>\
698 <array>\
699 <dict> <key>file</key> <string>fsck_hfs</string></dict>\
700 <string>diskdev_cmds-334.3</string>\
701 <dict> <key>volumename</key> <string>MyVol</string> </dict>\
702 <dict> <key>fstype</key> <string>Journaled HFS+</string> </dict>\
703 </array>\
704 </dict>\
705 </plist>\
706 <plist version=\\"1.0\\">\
707 <dict>\
708 <key>fsck_type</key> <string>VERIFY</string> \
709 <key>fsck_verbosity</key> <integer>1</integer>\
710 <key>fsck_msg_number</key> <integer>102</integer>\
711 <key>fsck_msg_string</key><string>Checking Extents Overflow file.</string>\
712 </dict>\
713 </plist>\
714 <plist version=\\"1.0\\">\
715 <dict>\
716 <key>fsck_type</key> <string>VERIFY</string>\
717 <key>fsck_verbosity</key> <integer>1</integer>\
718 <key>fsck_msg_number</key> <integer>103</integer>\
719 <key>fsck_msg_string</key><string>Checking Catalog file.</string>\
720 </dict>\
721 </plist>\
722 <plist version=\\"1.0\\">\
723 <dict>\
724 <key>fsck_type</key> <string>ERROR</string>\
725 <key>fsck_verbosity</key> <integer>1</integer>\
726 <key>fsck_msg_number</key> <integer>500</integer>\
727 <key>fsck_msg_string</key><string>Incorrect block count for %1$@</string>\
728 <key>parameters</key>\
729 <array>\
730 <dict> <key>file</key> <string>file1</string></dict>\
731 </array>\
732 </dict>\
733 </plist>\
734 <plist version=\\"1.0\\">\
735 <dict>\
736 <key>fsck_type</key> <string>INFORMATION</string> \
737 <key>fsck_verbosity</key> <integer>1</integer>\
738 <key>fsck_msg_number</key> <integer>559</integer>\
739 <key>fsck_msg_string</key><string>(It should be %1$@ instead of %2$@)</string>\
740 <key>parameters</key>\
741 <array>\
742 <integer>1266</integer>\
743 <integer>1272</integer>\
744 </array>\
745 </dict>\
746 </plist>\
747 <plist version=\\"1.0\\">\
748 <dict>\
749 <key>fsck_type</key> <string>ERROR</string>\
750 <key>fsck_verbosity</key> <integer>1</integer>\
751 <key>fsck_msg_number</key> <integer>511</integer>\
752 <key>fsck_msg_string</key><string>Overlapped extent allocation (file %1$@ %2$@)</string>\
753 <key>parameters</key>\
754 <array>\
755 <integer>1204</integer>\
756 <dict> <key>path</key> <string>/Users/foo/myfile</string> </dict>\
757 </array>\
758 </dict>\
759 </plist>\
760 <plist version=\\"1.0\\">\
761 <dict>\
762 <key>fsck_type</key> <string>DAMAGEINFO</string>\
763 <key>fsck_verbosity</key> <integer>0</integer>\
764 <key>fsck_msg_number</key> <integer>657</integer>\
765 <key>fsck_msg_string</key><string>File %1$@ may be damaged.</string>\
766 <key>parameters</key>\
767 <array>\
768 <dict> <key>path</key> <string>/Users/foo/myfile</string> </dict>\
769 </array>\
770 </dict>\
771 </plist>\
772 <plist version=\\"1.0\\">\
773 <dict>\
774 <key>fsck_type</key> <string>VERIFY</string>\
775 <key>fsck_verbosity</key> <integer>1</integer>\
776 <key>fsck_msg_number</key> <integer>104</integer>\
777 <key>fsck_msg_string</key><string>Checking Catalog hierarchy.</string>\
778 </dict>\
779 </plist>\
780 <plist version=\\"1.0\\">\
781 <dict>\
782 <key>fsck_type</key> <string>VERIFY</string>\
783 <key>fsck_verbosity</key> <integer>1</integer>\
784 <key>fsck_msg_number</key> <integer>106</integer>\
785 <key>fsck_msg_string</key><string>Checking volume bitmap.</string>\
786 </dict>\
787 </plist>\
788 <plist version=\\"1.0\\">\
789 <dict>\
790 <key>fsck_type</key> <string>ERROR</string>\
791 <key>fsck_verbosity</key> <integer>1</integer>\
792 <key>fsck_msg_number</key> <integer>556</integer>\
793 <key>fsck_msg_string</key><string>Volume Bit Map needs minor repair.</string>\
794 </dict>\
795 </plist>\
796 <plist version=\\"1.0\\">\
797 <dict>\
798 <key>fsck_type</key> <string>VERIFY</string>\
799 <key>fsck_verbosity</key> <integer>1</integer>\
800 <key>fsck_msg_number</key> <integer>108</integer>\
801 <key>fsck_msg_string</key><string>Checking volume information.</string>\
802 </dict>\
803 </plist>\
804 <plist version=\\"1.0\\">\
805 <dict>\
806 <key>fsck_type</key> <string>REPAIR</string>\
807 <key>fsck_verbosity</key> <integer>0</integer>\
808 <key>fsck_msg_number</key> <integer>113</integer>\
809 <key>fsck_msg_string</key><string>Repairing volume.</string> \
810 </dict>\
811 </plist>\
812 <plist version=\\"1.0\\">\
813 <dict>\
814 <key>fsck_type</key> <string>DAMAGEINFO</string> \
815 <key>fsck_verbosity</key> <integer>0</integer>\
816 <key>fsck_msg_number</key> <integer>657</integer>\
817 <key>fsck_msg_string</key><string> "Look for links to corrupt files in %1$@ directory."</string>\
818 <key>parameters</key>\
819 <array>\
820 <dict> <key>path</key> <string>/DamagedFiles</string> </dict> \
821 </array>\
822 </dict>\
823 </plist>\
824 <plist version=\\"1.0\\">\
825 <dict>\
826 <key>fsck_type</key> <string>VERIFY</string>\
827 <key>fsck_verbosity</key> <integer>1</integer>\
828 <key>fsck_msg_number</key> <integer>118</integer>\
829 <key>fsck_msg_string</key><string>Rechecking volume.</string>\
830 </dict>\
831 </plist>\
832 <plist version=\\"1.0\\">\
833 <dict>\
834 <key>fsck_type</key> <string>VERIFY</string>\
835 <key>fsck_verbosity</key> <integer>1</integer>\
836 <key>fsck_msg_number</key> <integer>102</integer>\
837 <key>fsck_msg_string</key><string>Checking Extents Overflow file.</string>\
838 </dict>\
839 </plist>\
840 <plist version=\\"1.0\\">\
841 <dict>\
842 <key>fsck_type</key> <string>VERIFY</string>\
843 <key>fsck_verbosity</key> <integer>1</integer>\
844 <key>fsck_msg_number</key> <integer>103</integer>\
845 <key>fsck_msg_string</key><string>Checking Catalog file.</string>\
846 </dict>\
847 </plist>\
848 <plist version=\\"1.0\\">\
849 <dict>\
850 <key>fsck_type</key> <string>VERIFY</string>\
851 <key>fsck_verbosity</key> <integer>1</integer>\
852 <key>fsck_msg_number</key> <integer>104</integer>\
853 <key>fsck_msg_string</key><string>Checking Catalog hierarchy.</string>\
854 </dict>\
855 </plist>\
856 <plist version=\\"1.0\\">\
857 <dict>\
858 <key>fsck_type</key> <string>VERIFY</string>\
859 <key>fsck_verbosity</key> <integer>1</integer>\
860 <key>fsck_msg_number</key> <integer>106</integer>\
861 <key>fsck_msg_string</key><string>Checking volume bitmap.</string>\
862 </dict>\
863 </plist>\
864 <plist version=\\"1.0\\">\
865 <dict>\
866 <key>fsck_type</key> <string>VERIFY</string>\
867 <key>fsck_verbosity</key> <integer>1</integer>\
868 <key>fsck_msg_number</key> <integer>108</integer>\
869 <key>fsck_msg_string</key><string>Checking volume information.</string>\
870 </dict>\
871 </plist>\
872 <plist version=\\"1.0\\">\
873 <dict>\
874 <key>fsck_type</key> <string>SUCCESS</string>\
875 <key>fsck_verbosity</key> <integer>0</integer>\
876 <key>fsck_msg_number</key> <integer>116</integer>\
877 <key>fsck_msg_string</key><string>Volume was repaired successfully.</string>\
878 </dict>\
879 </plist>\
880 \
881 }