X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BeagleBoardPkg%2FTools%2Freplace.c;fp=BeagleBoardPkg%2FTools%2Freplace.c;h=0000000000000000000000000000000000000000;hp=6a1dad4408018f4a2735f23eae73f5cee82c28f8;hb=5347c48016f27061475fdb053e867a06ce73492f;hpb=96ef5a8e30a8da33eaab09f13cc8d752342717a5 diff --git a/BeagleBoardPkg/Tools/replace.c b/BeagleBoardPkg/Tools/replace.c deleted file mode 100644 index 6a1dad4408..0000000000 --- a/BeagleBoardPkg/Tools/replace.c +++ /dev/null @@ -1,140 +0,0 @@ -// -// Quick hack to work around not having sed, or any other reasonable -// way to edit a file from a script on Windows...... -// -// Copyright (c) 2010, Apple Inc. All rights reserved.
-// -// SPDX-License-Identifier: BSD-2-Clause-Patent -// - -#include -#include -#include - -#define TRUE 1 -#define FALSE 0 - -typedef struct { - char *Match; - int MatchSize; - char *Replace; -} MATCH_PAIR; - -void -Usage (char *Name) -{ - printf ("\n%s OldFile NewFile MatchString ReplaceString [MatchString2 ReplaceString2]*\n", Name); - printf (" OldFile - Must be arg[1] File to search for MatchStrings\n"); - printf (" NewFile - Must be arg[2] File where MatchString has been replaced with ReplaceString\n"); - printf (" MatchString & ReplaceString. Required arguments.\n"); - printf (" More MatchString/ReplaceString pairs are supported.\n"); -} - -// -// argv[1] - Old File -// argv[2] - New File -// argv[3+n] - Match String -// argv[4+n] - Replace string -int -main (int argc, char **argv) -{ - FILE *In, *Out; - char *Key, *Replace; - int c, i, n, Len, MaxLenKey = 0, MinLenKey = INT_MAX; - unsigned long InFileSize, InFilePos; - MATCH_PAIR *Match; - int MaxMatch; - int ReadCount; - int Found; - - if (argc < 5) { - fprintf (stderr, "Need at least two files and one Match/Replacement string pair\n"); - Usage (argv[0]); - return -1; - } else if ((argc % 2) == 0) { - fprintf (stderr, "Match and Replace string must come in pairs\n"); - return -4; - } - - In = fopen (argv[1], "r"); - fseek (In, 0, SEEK_END); - InFileSize = ftell (In); - if (InFileSize == 0) { - fprintf (stderr, "Could not open %s\n", argv[1]); - return -6; - } - fseek (In, 0, SEEK_SET); - - - Out = fopen (argv[2], "w+"); - if ((In == NULL) || (Out == NULL)) { - fprintf (stderr, "Could not open %s\n", argv[2]); - return -2; - } - - MaxMatch = (argc - 2)/2; - Match = calloc (MaxMatch, sizeof (MATCH_PAIR)); - if (Match == NULL) { - return -7; - } - - for (n=0; n < MaxMatch; n++) { - Match[n].Match = argv[3 + n*2]; - Match[n].MatchSize = strlen (argv[3 + n*2]); - Match[n].Replace = argv[3 + n*2 + 1]; - if (Match[n].MatchSize > MaxLenKey) { - // Max size of match/replace string pair - MaxLenKey = Match[n].MatchSize; - } - if (Match[n].MatchSize < MinLenKey) { - MinLenKey = Match[n].MatchSize; - } - } - - Key = malloc (MaxLenKey); - if (Key == NULL) { - return -5; - } - - // Search for a match by reading every possition of the file - // into a buffer that is as big as the maximum search key size. - // Then we can search the keys for a match. If no match - // copy the old file character to the new file. If it is a match - // then copy the replacement string into the output file. - // This code assumes the file system is smart and caches the - // file in a buffer. So all the reads don't really hit the disk. - InFilePos = 0; - while (InFilePos < (InFileSize - MinLenKey)) { - fseek (In, InFilePos, SEEK_SET); - ReadCount = fread (Key, 1, MaxLenKey, In); - for (i = 0, Found = FALSE;i < MaxMatch; i++) { - if (ReadCount >= Match[i].MatchSize) { - if (!memcmp (Key, Match[i].Match, Match[i].MatchSize)) { - InFilePos += (Match[i].MatchSize - 1); - fputs (Match[i].Replace, Out); - Found = TRUE; - break; - } - } - } - if (!Found) { - fputc (Key[0], Out); - } - - InFilePos++; - } - - // We stoped searching when we got to the point that we could no longer match. - // So the last few bytes of the file are not copied in the privous loop - fseek (In, InFilePos, SEEK_SET); - while ((c = fgetc (In)) != EOF) { - fputc (c, Out); - } - - fclose (In); - fclose (Out); - free (Key); - free (Match); - return 0; -} -