static FILE * FlOpenIncludeWithPrefix ( char *PrefixDir, ACPI_PARSE_OBJECT *Op, char *Filename) { FILE *IncludeFile; char *Pathname; UINT32 OriginalLineNumber; /* Build the full pathname to the file */ Pathname = FlMergePathnames (PrefixDir, Filename); DbgPrint (ASL_PARSE_OUTPUT, "Include: Opening file - \"%s\"\n\n", Pathname); /* Attempt to open the file, push if successful */ IncludeFile = fopen (Pathname, "r"); if (!IncludeFile) { return (NULL); } /* * Check the entire include file for any # preprocessor directives. * This is because there may be some confusion between the #include * preprocessor directive and the ASL Include statement. A file included * by the ASL include cannot contain preprocessor directives because * the preprocessor has already run by the time the ASL include is * recognized (by the compiler, not the preprocessor.) * * Note: DtGetNextLine strips/ignores comments. * Save current line number since DtGetNextLine modifies it. */ AslGbl_CurrentLineNumber--; OriginalLineNumber = AslGbl_CurrentLineNumber; while (DtGetNextLine (IncludeFile, DT_ALLOW_MULTILINE_QUOTES) != ASL_EOF) { if (AslGbl_CurrentLineBuffer[0] == '#') { AslError (ASL_ERROR, ASL_MSG_INCLUDE_FILE, Op, "use #include instead"); } } AslGbl_CurrentLineNumber = OriginalLineNumber; /* Must seek back to the start of the file */ fseek (IncludeFile, 0, SEEK_SET); /* Push the include file on the open input file stack */ AslPushInputFileStack (IncludeFile, Pathname); return (IncludeFile); }
FILE * FlOpenIncludeWithPrefix ( char *PrefixDir, char *Filename) { FILE *IncludeFile; char *Pathname; /* Build the full pathname to the file */ Pathname = FlMergePathnames (PrefixDir, Filename); DbgPrint (ASL_PARSE_OUTPUT, "Include: Opening file - \"%s\"\n\n", Pathname); /* Attempt to open the file, push if successful */ IncludeFile = fopen (Pathname, "r"); if (!IncludeFile) { fprintf (stderr, "Could not open include file %s\n", Pathname); ACPI_FREE (Pathname); return (NULL); } /* Push the include file on the open input file stack */ AslPushInputFileStack (IncludeFile, Pathname); return (IncludeFile); }
static FILE * FlOpenIncludeWithPrefix ( char *PrefixDir, char *Filename) { FILE *IncludeFile; char *Pathname; /* Build the full pathname to the file */ Pathname = ACPI_ALLOCATE (strlen (PrefixDir) + strlen (Filename) + 1); strcpy (Pathname, PrefixDir); strcat (Pathname, Filename); DbgPrint (ASL_PARSE_OUTPUT, "\nAttempt to open include file: path %s\n\n", Pathname); /* Attempt to open the file, push if successful */ IncludeFile = fopen (Pathname, "r"); if (IncludeFile) { /* Push the include file on the open input file stack */ AslPushInputFileStack (IncludeFile, Pathname); return (IncludeFile); } ACPI_FREE (Pathname); return (NULL); }
void FlOpenIncludeFile ( ACPI_PARSE_OBJECT *Op) { FILE *IncFile; /* Op must be valid */ if (!Op) { AslCommonError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_InputByteCount, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, " - Null parse node"); return; } /* * Flush out the "include ()" statement on this line, start * the actual include file on the next line */ ResetCurrentLineBuffer (); FlPrintFile (ASL_FILE_SOURCE_OUTPUT, "\n"); Gbl_CurrentLineOffset++; /* Prepend the directory pathname and open the include file */ DbgPrint (ASL_PARSE_OUTPUT, "\nOpen include file: path %s\n\n", Op->Asl.Value.String); IncFile = FlOpenLocalFile (Op->Asl.Value.String, "r"); if (!IncFile) { sprintf (MsgBuffer, "%s (%s)", Op->Asl.Value.String, strerror (errno)); AslError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN, Op, MsgBuffer); return; } /* Push the include file on the open input file stack */ AslPushInputFileStack (IncFile, Op->Asl.Value.String); }