1efcc2a30SJung-uk Kim /******************************************************************************
2efcc2a30SJung-uk Kim  *
3efcc2a30SJung-uk Kim  * Module Name: aslfileio - File I/O support
4efcc2a30SJung-uk Kim  *
5efcc2a30SJung-uk Kim  *****************************************************************************/
6efcc2a30SJung-uk Kim 
7efcc2a30SJung-uk Kim /*
8f8146b88SJung-uk Kim  * Copyright (C) 2000 - 2016, Intel Corp.
9efcc2a30SJung-uk Kim  * All rights reserved.
10efcc2a30SJung-uk Kim  *
11efcc2a30SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
12efcc2a30SJung-uk Kim  * modification, are permitted provided that the following conditions
13efcc2a30SJung-uk Kim  * are met:
14efcc2a30SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
15efcc2a30SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
16efcc2a30SJung-uk Kim  *    without modification.
17efcc2a30SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18efcc2a30SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
19efcc2a30SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
20efcc2a30SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
21efcc2a30SJung-uk Kim  *    binary redistribution.
22efcc2a30SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
23efcc2a30SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
24efcc2a30SJung-uk Kim  *    from this software without specific prior written permission.
25efcc2a30SJung-uk Kim  *
26efcc2a30SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
27efcc2a30SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
28efcc2a30SJung-uk Kim  * Software Foundation.
29efcc2a30SJung-uk Kim  *
30efcc2a30SJung-uk Kim  * NO WARRANTY
31efcc2a30SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32efcc2a30SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33efcc2a30SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34efcc2a30SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35efcc2a30SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36efcc2a30SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37efcc2a30SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38efcc2a30SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39efcc2a30SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40efcc2a30SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41efcc2a30SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
42efcc2a30SJung-uk Kim  */
43efcc2a30SJung-uk Kim 
44efcc2a30SJung-uk Kim #include <contrib/dev/acpica/compiler/aslcompiler.h>
45313a0c13SJung-uk Kim #include <contrib/dev/acpica/include/acapps.h>
46efcc2a30SJung-uk Kim 
47efcc2a30SJung-uk Kim #define _COMPONENT          ACPI_COMPILER
48efcc2a30SJung-uk Kim         ACPI_MODULE_NAME    ("aslfileio")
49efcc2a30SJung-uk Kim 
50efcc2a30SJung-uk Kim 
51efcc2a30SJung-uk Kim /*******************************************************************************
52efcc2a30SJung-uk Kim  *
53efcc2a30SJung-uk Kim  * FUNCTION:    FlFileError
54efcc2a30SJung-uk Kim  *
55efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
56efcc2a30SJung-uk Kim  *              ErrorId             - Index into error message array
57efcc2a30SJung-uk Kim  *
58efcc2a30SJung-uk Kim  * RETURN:      None
59efcc2a30SJung-uk Kim  *
60efcc2a30SJung-uk Kim  * DESCRIPTION: Decode errno to an error message and add the entire error
61efcc2a30SJung-uk Kim  *              to the error log.
62efcc2a30SJung-uk Kim  *
63efcc2a30SJung-uk Kim  ******************************************************************************/
64efcc2a30SJung-uk Kim 
65efcc2a30SJung-uk Kim void
66efcc2a30SJung-uk Kim FlFileError (
67efcc2a30SJung-uk Kim     UINT32                  FileId,
68efcc2a30SJung-uk Kim     UINT8                   ErrorId)
69efcc2a30SJung-uk Kim {
70efcc2a30SJung-uk Kim 
711c0e1b6dSJung-uk Kim     sprintf (MsgBuffer, "\"%s\" (%s) - %s", Gbl_Files[FileId].Filename,
721c0e1b6dSJung-uk Kim         Gbl_Files[FileId].Description, strerror (errno));
73f8146b88SJung-uk Kim 
74efcc2a30SJung-uk Kim     AslCommonError (ASL_ERROR, ErrorId, 0, 0, 0, 0, NULL, MsgBuffer);
75efcc2a30SJung-uk Kim }
76efcc2a30SJung-uk Kim 
77efcc2a30SJung-uk Kim 
78efcc2a30SJung-uk Kim /*******************************************************************************
79efcc2a30SJung-uk Kim  *
80efcc2a30SJung-uk Kim  * FUNCTION:    FlOpenFile
81efcc2a30SJung-uk Kim  *
82efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
83efcc2a30SJung-uk Kim  *              Filename            - file pathname to open
84efcc2a30SJung-uk Kim  *              Mode                - Open mode for fopen
85efcc2a30SJung-uk Kim  *
86efcc2a30SJung-uk Kim  * RETURN:      None
87efcc2a30SJung-uk Kim  *
88efcc2a30SJung-uk Kim  * DESCRIPTION: Open a file.
89efcc2a30SJung-uk Kim  *              NOTE: Aborts compiler on any error.
90efcc2a30SJung-uk Kim  *
91efcc2a30SJung-uk Kim  ******************************************************************************/
92efcc2a30SJung-uk Kim 
93efcc2a30SJung-uk Kim void
94efcc2a30SJung-uk Kim FlOpenFile (
95efcc2a30SJung-uk Kim     UINT32                  FileId,
96efcc2a30SJung-uk Kim     char                    *Filename,
97efcc2a30SJung-uk Kim     char                    *Mode)
98efcc2a30SJung-uk Kim {
99efcc2a30SJung-uk Kim     FILE                    *File;
100efcc2a30SJung-uk Kim 
101efcc2a30SJung-uk Kim 
1021c0e1b6dSJung-uk Kim     Gbl_Files[FileId].Filename = Filename;
1031c0e1b6dSJung-uk Kim     Gbl_Files[FileId].Handle = NULL;
1041c0e1b6dSJung-uk Kim 
105efcc2a30SJung-uk Kim     File = fopen (Filename, Mode);
106efcc2a30SJung-uk Kim     if (!File)
107efcc2a30SJung-uk Kim     {
108efcc2a30SJung-uk Kim         FlFileError (FileId, ASL_MSG_OPEN);
109efcc2a30SJung-uk Kim         AslAbort ();
110efcc2a30SJung-uk Kim     }
111efcc2a30SJung-uk Kim 
112efcc2a30SJung-uk Kim     Gbl_Files[FileId].Handle = File;
113efcc2a30SJung-uk Kim }
114efcc2a30SJung-uk Kim 
115efcc2a30SJung-uk Kim 
116efcc2a30SJung-uk Kim /*******************************************************************************
117efcc2a30SJung-uk Kim  *
118efcc2a30SJung-uk Kim  * FUNCTION:    FlGetFileSize
119efcc2a30SJung-uk Kim  *
120efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
121efcc2a30SJung-uk Kim  *
122efcc2a30SJung-uk Kim  * RETURN:      File Size
123efcc2a30SJung-uk Kim  *
124313a0c13SJung-uk Kim  * DESCRIPTION: Get current file size. Uses common seek-to-EOF function.
125313a0c13SJung-uk Kim  *              File must be open. Aborts compiler on error.
126efcc2a30SJung-uk Kim  *
127efcc2a30SJung-uk Kim  ******************************************************************************/
128efcc2a30SJung-uk Kim 
129efcc2a30SJung-uk Kim UINT32
130efcc2a30SJung-uk Kim FlGetFileSize (
131efcc2a30SJung-uk Kim     UINT32                  FileId)
132efcc2a30SJung-uk Kim {
133efcc2a30SJung-uk Kim     UINT32                  FileSize;
134efcc2a30SJung-uk Kim 
135efcc2a30SJung-uk Kim 
136313a0c13SJung-uk Kim     FileSize = CmGetFileSize (Gbl_Files[FileId].Handle);
137313a0c13SJung-uk Kim     if (FileSize == ACPI_UINT32_MAX)
138313a0c13SJung-uk Kim     {
139313a0c13SJung-uk Kim         AslAbort();
140313a0c13SJung-uk Kim     }
141efcc2a30SJung-uk Kim 
142efcc2a30SJung-uk Kim     return (FileSize);
143efcc2a30SJung-uk Kim }
144efcc2a30SJung-uk Kim 
145efcc2a30SJung-uk Kim 
146efcc2a30SJung-uk Kim /*******************************************************************************
147efcc2a30SJung-uk Kim  *
148efcc2a30SJung-uk Kim  * FUNCTION:    FlReadFile
149efcc2a30SJung-uk Kim  *
150efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
151efcc2a30SJung-uk Kim  *              Buffer              - Where to place the data
152efcc2a30SJung-uk Kim  *              Length              - Amount to read
153efcc2a30SJung-uk Kim  *
154efcc2a30SJung-uk Kim  * RETURN:      Status. AE_ERROR indicates EOF.
155efcc2a30SJung-uk Kim  *
156efcc2a30SJung-uk Kim  * DESCRIPTION: Read data from an open file.
157efcc2a30SJung-uk Kim  *              NOTE: Aborts compiler on any error.
158efcc2a30SJung-uk Kim  *
159efcc2a30SJung-uk Kim  ******************************************************************************/
160efcc2a30SJung-uk Kim 
161efcc2a30SJung-uk Kim ACPI_STATUS
162efcc2a30SJung-uk Kim FlReadFile (
163efcc2a30SJung-uk Kim     UINT32                  FileId,
164efcc2a30SJung-uk Kim     void                    *Buffer,
165efcc2a30SJung-uk Kim     UINT32                  Length)
166efcc2a30SJung-uk Kim {
167efcc2a30SJung-uk Kim     UINT32                  Actual;
168efcc2a30SJung-uk Kim 
169efcc2a30SJung-uk Kim 
170efcc2a30SJung-uk Kim     /* Read and check for error */
171efcc2a30SJung-uk Kim 
172efcc2a30SJung-uk Kim     Actual = fread (Buffer, 1, Length, Gbl_Files[FileId].Handle);
173efcc2a30SJung-uk Kim     if (Actual < Length)
174efcc2a30SJung-uk Kim     {
175efcc2a30SJung-uk Kim         if (feof (Gbl_Files[FileId].Handle))
176efcc2a30SJung-uk Kim         {
177efcc2a30SJung-uk Kim             /* End-of-file, just return error */
178efcc2a30SJung-uk Kim 
179efcc2a30SJung-uk Kim             return (AE_ERROR);
180efcc2a30SJung-uk Kim         }
181efcc2a30SJung-uk Kim 
182efcc2a30SJung-uk Kim         FlFileError (FileId, ASL_MSG_READ);
183efcc2a30SJung-uk Kim         AslAbort ();
184efcc2a30SJung-uk Kim     }
185efcc2a30SJung-uk Kim 
186efcc2a30SJung-uk Kim     return (AE_OK);
187efcc2a30SJung-uk Kim }
188efcc2a30SJung-uk Kim 
189efcc2a30SJung-uk Kim 
190efcc2a30SJung-uk Kim /*******************************************************************************
191efcc2a30SJung-uk Kim  *
192efcc2a30SJung-uk Kim  * FUNCTION:    FlWriteFile
193efcc2a30SJung-uk Kim  *
194efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
195efcc2a30SJung-uk Kim  *              Buffer              - Data to write
196efcc2a30SJung-uk Kim  *              Length              - Amount of data to write
197efcc2a30SJung-uk Kim  *
198efcc2a30SJung-uk Kim  * RETURN:      None
199efcc2a30SJung-uk Kim  *
200efcc2a30SJung-uk Kim  * DESCRIPTION: Write data to an open file.
201efcc2a30SJung-uk Kim  *              NOTE: Aborts compiler on any error.
202efcc2a30SJung-uk Kim  *
203efcc2a30SJung-uk Kim  ******************************************************************************/
204efcc2a30SJung-uk Kim 
205efcc2a30SJung-uk Kim void
206efcc2a30SJung-uk Kim FlWriteFile (
207efcc2a30SJung-uk Kim     UINT32                  FileId,
208efcc2a30SJung-uk Kim     void                    *Buffer,
209efcc2a30SJung-uk Kim     UINT32                  Length)
210efcc2a30SJung-uk Kim {
211efcc2a30SJung-uk Kim     UINT32                  Actual;
212efcc2a30SJung-uk Kim 
213efcc2a30SJung-uk Kim 
214efcc2a30SJung-uk Kim     /* Write and check for error */
215efcc2a30SJung-uk Kim 
216efcc2a30SJung-uk Kim     Actual = fwrite ((char *) Buffer, 1, Length, Gbl_Files[FileId].Handle);
217efcc2a30SJung-uk Kim     if (Actual != Length)
218efcc2a30SJung-uk Kim     {
219efcc2a30SJung-uk Kim         FlFileError (FileId, ASL_MSG_WRITE);
220efcc2a30SJung-uk Kim         AslAbort ();
221efcc2a30SJung-uk Kim     }
2225ef50723SJung-uk Kim 
2235ef50723SJung-uk Kim     if ((FileId == ASL_FILE_PREPROCESSOR) && Gbl_PreprocessorOutputFlag)
2245ef50723SJung-uk Kim     {
2255ef50723SJung-uk Kim         /* Duplicate the output to the user preprocessor (.i) file */
2265ef50723SJung-uk Kim 
2275ef50723SJung-uk Kim         Actual = fwrite ((char *) Buffer, 1, Length,
2285ef50723SJung-uk Kim             Gbl_Files[ASL_FILE_PREPROCESSOR_USER].Handle);
2295ef50723SJung-uk Kim         if (Actual != Length)
2305ef50723SJung-uk Kim         {
2315ef50723SJung-uk Kim             FlFileError (FileId, ASL_MSG_WRITE);
2325ef50723SJung-uk Kim             AslAbort ();
2335ef50723SJung-uk Kim         }
2345ef50723SJung-uk Kim     }
235efcc2a30SJung-uk Kim }
236efcc2a30SJung-uk Kim 
237efcc2a30SJung-uk Kim 
238efcc2a30SJung-uk Kim /*******************************************************************************
239efcc2a30SJung-uk Kim  *
240efcc2a30SJung-uk Kim  * FUNCTION:    FlPrintFile
241efcc2a30SJung-uk Kim  *
242efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
243efcc2a30SJung-uk Kim  *              Format              - Printf format string
244efcc2a30SJung-uk Kim  *              ...                 - Printf arguments
245efcc2a30SJung-uk Kim  *
246efcc2a30SJung-uk Kim  * RETURN:      None
247efcc2a30SJung-uk Kim  *
248efcc2a30SJung-uk Kim  * DESCRIPTION: Formatted write to an open file.
249efcc2a30SJung-uk Kim  *              NOTE: Aborts compiler on any error.
250efcc2a30SJung-uk Kim  *
251efcc2a30SJung-uk Kim  ******************************************************************************/
252efcc2a30SJung-uk Kim 
253efcc2a30SJung-uk Kim void
254efcc2a30SJung-uk Kim FlPrintFile (
255efcc2a30SJung-uk Kim     UINT32                  FileId,
256efcc2a30SJung-uk Kim     char                    *Format,
257efcc2a30SJung-uk Kim     ...)
258efcc2a30SJung-uk Kim {
259efcc2a30SJung-uk Kim     INT32                   Actual;
260efcc2a30SJung-uk Kim     va_list                 Args;
261efcc2a30SJung-uk Kim 
262efcc2a30SJung-uk Kim 
263efcc2a30SJung-uk Kim     va_start (Args, Format);
264efcc2a30SJung-uk Kim     Actual = vfprintf (Gbl_Files[FileId].Handle, Format, Args);
265efcc2a30SJung-uk Kim     va_end (Args);
266efcc2a30SJung-uk Kim 
267efcc2a30SJung-uk Kim     if (Actual == -1)
268efcc2a30SJung-uk Kim     {
269efcc2a30SJung-uk Kim         FlFileError (FileId, ASL_MSG_WRITE);
270efcc2a30SJung-uk Kim         AslAbort ();
271efcc2a30SJung-uk Kim     }
2725ef50723SJung-uk Kim 
273f8146b88SJung-uk Kim     if ((FileId == ASL_FILE_PREPROCESSOR) &&
274f8146b88SJung-uk Kim         Gbl_PreprocessorOutputFlag)
2755ef50723SJung-uk Kim     {
2765ef50723SJung-uk Kim         /*
2775ef50723SJung-uk Kim          * Duplicate the output to the user preprocessor (.i) file,
2785ef50723SJung-uk Kim          * except: no #line directives.
2795ef50723SJung-uk Kim          */
2805ef50723SJung-uk Kim         if (!strncmp (Format, "#line", 5))
2815ef50723SJung-uk Kim         {
2825ef50723SJung-uk Kim             return;
2835ef50723SJung-uk Kim         }
2845ef50723SJung-uk Kim 
2855ef50723SJung-uk Kim         va_start (Args, Format);
2865ef50723SJung-uk Kim         Actual = vfprintf (Gbl_Files[ASL_FILE_PREPROCESSOR_USER].Handle,
2875ef50723SJung-uk Kim             Format, Args);
2885ef50723SJung-uk Kim         va_end (Args);
2895ef50723SJung-uk Kim 
2905ef50723SJung-uk Kim         if (Actual == -1)
2915ef50723SJung-uk Kim         {
2925ef50723SJung-uk Kim             FlFileError (FileId, ASL_MSG_WRITE);
2935ef50723SJung-uk Kim             AslAbort ();
2945ef50723SJung-uk Kim         }
2955ef50723SJung-uk Kim     }
296efcc2a30SJung-uk Kim }
297efcc2a30SJung-uk Kim 
298efcc2a30SJung-uk Kim 
299efcc2a30SJung-uk Kim /*******************************************************************************
300efcc2a30SJung-uk Kim  *
301efcc2a30SJung-uk Kim  * FUNCTION:    FlSeekFile
302efcc2a30SJung-uk Kim  *
303efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
304efcc2a30SJung-uk Kim  *              Offset              - Absolute byte offset in file
305efcc2a30SJung-uk Kim  *
306efcc2a30SJung-uk Kim  * RETURN:      None
307efcc2a30SJung-uk Kim  *
308efcc2a30SJung-uk Kim  * DESCRIPTION: Seek to absolute offset.
309efcc2a30SJung-uk Kim  *              NOTE: Aborts compiler on any error.
310efcc2a30SJung-uk Kim  *
311efcc2a30SJung-uk Kim  ******************************************************************************/
312efcc2a30SJung-uk Kim 
313efcc2a30SJung-uk Kim void
314efcc2a30SJung-uk Kim FlSeekFile (
315efcc2a30SJung-uk Kim     UINT32                  FileId,
316efcc2a30SJung-uk Kim     long                    Offset)
317efcc2a30SJung-uk Kim {
318efcc2a30SJung-uk Kim     int                     Error;
319efcc2a30SJung-uk Kim 
320efcc2a30SJung-uk Kim 
321efcc2a30SJung-uk Kim     Error = fseek (Gbl_Files[FileId].Handle, Offset, SEEK_SET);
322efcc2a30SJung-uk Kim     if (Error)
323efcc2a30SJung-uk Kim     {
324efcc2a30SJung-uk Kim         FlFileError (FileId, ASL_MSG_SEEK);
325efcc2a30SJung-uk Kim         AslAbort ();
326efcc2a30SJung-uk Kim     }
327efcc2a30SJung-uk Kim }
328efcc2a30SJung-uk Kim 
329efcc2a30SJung-uk Kim 
330efcc2a30SJung-uk Kim /*******************************************************************************
331efcc2a30SJung-uk Kim  *
332efcc2a30SJung-uk Kim  * FUNCTION:    FlCloseFile
333efcc2a30SJung-uk Kim  *
334efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
335efcc2a30SJung-uk Kim  *
336efcc2a30SJung-uk Kim  * RETURN:      None
337efcc2a30SJung-uk Kim  *
338efcc2a30SJung-uk Kim  * DESCRIPTION: Close an open file. Aborts compiler on error
339efcc2a30SJung-uk Kim  *
340efcc2a30SJung-uk Kim  ******************************************************************************/
341efcc2a30SJung-uk Kim 
342efcc2a30SJung-uk Kim void
343efcc2a30SJung-uk Kim FlCloseFile (
344efcc2a30SJung-uk Kim     UINT32                  FileId)
345efcc2a30SJung-uk Kim {
346efcc2a30SJung-uk Kim     int                     Error;
347efcc2a30SJung-uk Kim 
348efcc2a30SJung-uk Kim 
349efcc2a30SJung-uk Kim     if (!Gbl_Files[FileId].Handle)
350efcc2a30SJung-uk Kim     {
351efcc2a30SJung-uk Kim         return;
352efcc2a30SJung-uk Kim     }
353efcc2a30SJung-uk Kim 
354efcc2a30SJung-uk Kim     Error = fclose (Gbl_Files[FileId].Handle);
355efcc2a30SJung-uk Kim     if (Error)
356efcc2a30SJung-uk Kim     {
357efcc2a30SJung-uk Kim         FlFileError (FileId, ASL_MSG_CLOSE);
358efcc2a30SJung-uk Kim         AslAbort ();
359efcc2a30SJung-uk Kim     }
360efcc2a30SJung-uk Kim 
361313a0c13SJung-uk Kim     /* Do not clear/free the filename string */
362313a0c13SJung-uk Kim 
363efcc2a30SJung-uk Kim     Gbl_Files[FileId].Handle = NULL;
364efcc2a30SJung-uk Kim     return;
365efcc2a30SJung-uk Kim }
366efcc2a30SJung-uk Kim 
367efcc2a30SJung-uk Kim 
368efcc2a30SJung-uk Kim /*******************************************************************************
369efcc2a30SJung-uk Kim  *
370efcc2a30SJung-uk Kim  * FUNCTION:    FlDeleteFile
371efcc2a30SJung-uk Kim  *
372efcc2a30SJung-uk Kim  * PARAMETERS:  FileId              - Index into file info array
373efcc2a30SJung-uk Kim  *
374efcc2a30SJung-uk Kim  * RETURN:      None
375efcc2a30SJung-uk Kim  *
376efcc2a30SJung-uk Kim  * DESCRIPTION: Delete a file.
377efcc2a30SJung-uk Kim  *
378efcc2a30SJung-uk Kim  ******************************************************************************/
379efcc2a30SJung-uk Kim 
380efcc2a30SJung-uk Kim void
381efcc2a30SJung-uk Kim FlDeleteFile (
382efcc2a30SJung-uk Kim     UINT32                  FileId)
383efcc2a30SJung-uk Kim {
384efcc2a30SJung-uk Kim     ASL_FILE_INFO           *Info = &Gbl_Files[FileId];
385efcc2a30SJung-uk Kim 
386efcc2a30SJung-uk Kim 
387efcc2a30SJung-uk Kim     if (!Info->Filename)
388efcc2a30SJung-uk Kim     {
389efcc2a30SJung-uk Kim         return;
390efcc2a30SJung-uk Kim     }
391efcc2a30SJung-uk Kim 
392efcc2a30SJung-uk Kim     if (remove (Info->Filename))
393efcc2a30SJung-uk Kim     {
394efcc2a30SJung-uk Kim         printf ("%s (%s file) ",
395efcc2a30SJung-uk Kim             Info->Filename, Info->Description);
396efcc2a30SJung-uk Kim         perror ("Could not delete");
397efcc2a30SJung-uk Kim     }
398efcc2a30SJung-uk Kim 
399efcc2a30SJung-uk Kim     Info->Filename = NULL;
400efcc2a30SJung-uk Kim     return;
401efcc2a30SJung-uk Kim }
402