void AsInsertCarriageReturns ( char *Buffer) { char *SubString; char *SubBuffer; SubBuffer = Buffer; SubString = Buffer; while (SubString) { /* Find the target string */ SubString = strstr (SubBuffer, "\n"); if (!SubString) { return; } SubBuffer = AsInsertData (SubString, "\r", 1); SubBuffer += 1; } }
void AsTrimWhitespace ( char *Buffer) { char *SubBuffer; int ReplaceCount = 1; while (ReplaceCount) { ReplaceCount = AsReplaceString ("\n\n\n\n", "\n\n\n", REPLACE_SUBSTRINGS, Buffer); } /* * Check for exactly one blank line after the copyright header */ /* Find the header */ SubBuffer = strstr (Buffer, HeaderBegin); if (!SubBuffer) { return; } /* Find the end of the header */ SubBuffer = strstr (SubBuffer, "*/"); SubBuffer = AsSkipPastChar (SubBuffer, '\n'); /* Replace a double blank line with a single */ if (!strncmp (SubBuffer, "\n\n", 2)) { AsReplaceData (SubBuffer, 2, "\n", 1); AcpiOsPrintf ("Found multiple blank lines after copyright\n"); } /* If no blank line after header, insert one */ else if (*SubBuffer != '\n') { AsInsertData (SubBuffer, "\n", 1); AcpiOsPrintf ("Inserted blank line after copyright\n"); } }
int AsReplaceString ( char *Target, char *Replacement, UINT8 Type, char *Buffer) { char *SubString1; char *SubString2; char *SubBuffer; int TargetLength; int ReplacementLength; int ReplaceCount = 0; TargetLength = strlen (Target); ReplacementLength = strlen (Replacement); SubBuffer = Buffer; SubString1 = Buffer; while (SubString1) { /* Find the target string */ SubString1 = strstr (SubBuffer, Target); if (!SubString1) { return (ReplaceCount); } /* * Check for translation escape string -- means to ignore * blocks of code while replacing */ if (Gbl_IgnoreTranslationEscapes) { SubString2 = NULL; } else { SubString2 = strstr (SubBuffer, AS_START_IGNORE); } if ((SubString2) && (SubString2 < SubString1)) { /* Find end of the escape block starting at "Substring2" */ SubString2 = strstr (SubString2, AS_STOP_IGNORE); if (!SubString2) { /* Didn't find terminator */ return (ReplaceCount); } /* Move buffer to end of escape block and continue */ SubBuffer = SubString2; } /* Do the actual replace if the target was found */ else { if ((Type & REPLACE_MASK) == REPLACE_WHOLE_WORD) { if (!AsMatchExactWord (SubString1, TargetLength)) { SubBuffer = SubString1 + 1; continue; } } SubBuffer = AsReplaceData (SubString1, TargetLength, Replacement, ReplacementLength); if ((Type & EXTRA_INDENT_C) && (!Gbl_StructDefs)) { SubBuffer = AsInsertData (SubBuffer, " ", 8); } ReplaceCount++; } } return (ReplaceCount); }
void AsInsertPrefix ( char *Buffer, char *Keyword, UINT8 Type) { char *SubString; char *SubBuffer; char *EndKeyword; int InsertLength; char *InsertString; int TrailingSpaces; char LowerKeyword[128]; int KeywordLength; switch (Type) { case SRC_TYPE_STRUCT: InsertString = "struct "; break; case SRC_TYPE_UNION: InsertString = "union "; break; default: return; } strcpy (LowerKeyword, Keyword); AcpiUtStrlwr (LowerKeyword); SubBuffer = Buffer; SubString = Buffer; InsertLength = strlen (InsertString); KeywordLength = strlen (Keyword); while (SubString) { /* Find an instance of the keyword */ SubString = strstr (SubBuffer, LowerKeyword); if (!SubString) { return; } SubBuffer = SubString; /* Must be standalone word, not a substring */ if (AsMatchExactWord (SubString, KeywordLength)) { /* Make sure the keyword isn't already prefixed with the insert */ if (!strncmp (SubString - InsertLength, InsertString, InsertLength)) { /* Add spaces if not already at the end-of-line */ if (*(SubBuffer + KeywordLength) != '\n') { /* Already present, add spaces after to align structure members */ #if 0 /* ONLY FOR C FILES */ AsInsertData (SubBuffer + KeywordLength, " ", 8); #endif } goto Next; } /* Make sure the keyword isn't at the end of a struct/union */ /* Note: This code depends on a single space after the brace */ if (*(SubString - 2) == '}') { goto Next; } /* Prefix the keyword with the insert string */ Gbl_MadeChanges = TRUE; /* Is there room for insertion */ EndKeyword = SubString + strlen (LowerKeyword); TrailingSpaces = 0; while (EndKeyword[TrailingSpaces] == ' ') { TrailingSpaces++; } /* * Use "if (TrailingSpaces > 1)" if we want to ignore casts */ SubBuffer = SubString + InsertLength; if (TrailingSpaces > InsertLength) { /* Insert the keyword */ memmove (SubBuffer, SubString, KeywordLength); /* Insert the keyword */ memmove (SubString, InsertString, InsertLength); } else { AsInsertData (SubString, InsertString, InsertLength); } } Next: SubBuffer += KeywordLength; } }
int AsLowerCaseString ( char *Target, char *Buffer) { char *SubString1; char *SubString2; char *SubBuffer; int TargetLength; int LowerCaseCount = 0; int i; TargetLength = strlen (Target); SubBuffer = Buffer; SubString1 = Buffer; while (SubString1) { /* Find the target string */ SubString1 = strstr (SubBuffer, Target); if (!SubString1) { return (LowerCaseCount); } /* * Check for translation escape string -- means to ignore * blocks of code while replacing */ if (Gbl_IgnoreTranslationEscapes) { SubString2 = NULL; } else { SubString2 = strstr (SubBuffer, AS_START_IGNORE); } if ((SubString2) && (SubString2 < SubString1)) { /* Find end of the escape block starting at "Substring2" */ SubString2 = strstr (SubString2, AS_STOP_IGNORE); if (!SubString2) { /* Didn't find terminator */ return (LowerCaseCount); } /* Move buffer to end of escape block and continue */ SubBuffer = SubString2; } /* Do the actual replace if the target was found */ else { if (!AsMatchExactWord (SubString1, TargetLength)) { SubBuffer = SubString1 + 1; continue; } for (i = 0; i < TargetLength; i++) { SubString1[i] = (char) tolower ((int) SubString1[i]); } SubBuffer = SubString1 + TargetLength; if ((Gbl_WidenDeclarations) && (!Gbl_StructDefs)) { if ((SubBuffer[0] == ' ') && (SubBuffer[1] == ' ')) { AsInsertData (SubBuffer, " ", 8); } } LowerCaseCount++; } } return (LowerCaseCount); }