boot3/Make/ConvertLineEndings
Elliot Nunn 28cdb676e0 Add scripts to fix file types and line endings
This commit combines parts of two commits from the mac-rom master
branch. The idea is to clean up the history for new forks, boot3 in
particular.
2017-12-26 10:12:03 +08:00

135 lines
2.3 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#if 0
# ---------- START OF MPW SHELL SCRIPT ----------
# Get the root to work on.
Set ToolPath "{0}Tool"
Set Repo "`Files -f "{0}" | StreamEdit -e '1 Replace /[Â:]*:[Â:]*°/ -n'`"
Set ObjFile "{TempFolder}ConvertLineEndingsTool.o"
# Make sure the fast C newline-replacer is available!
If "`Exists "{ToolPath}"`" == ""
SC -w off -o "{ObjFile}" "{0}"
ILink -d -t MPST -c 'MPS ' -o "{ToolPath}" "{Libraries}Stubs.o" "{CLibraries}StdCLib.o" "{Libraries}MacRuntime.o" "{Libraries}IntEnv.o" "{Libraries}Interface.o" "{ObjFile}"
End
# Run it!
Echo "# Suggested command to convert TEXT file line-endings:"
Echo "{ToolPath} ¶¶"
Files -f -r -o -s -t TEXT "{Repo}" | StreamEdit -e '1,° Change " " . " ¶¶"'
Echo " Dev:Null"
Exit
# ---------- END OF MPW SHELL SCRIPT ----------
#endif
// ---------- START OF C PROGRAM ----------
#include <stdio.h>
int main(int argc, char **argv)
{
long buflen = 0x1000000;
char *buf;
FILE *f;
int i;
int first_i = 1;
size_t didread;
char fromc = 10;
char toc = 13;
int didctr = 0, didntctr = 0;
if(argc < 2)
{
printf("# USAGE: %s [-unix] FILE ...\n", argv[0]);
return 1;
}
if(!strcmp(argv[first_i], "-unix"))
{
fromc = 13;
toc = 10;
first_i++;
}
// Get the largest possible buffer
buf = (char *)malloc(buflen);
while(buflen && !buf)
{
buflen >>= 1;
buf = (char *)malloc(buflen);
}
if(!buf) return 1;
//printf("# %db buffer\n", buflen);
for(i=first_i; i<argc; i++)
{
int fif = 0;
if(!strcmp(argv[i], "Dev:Null")) continue;
f = fopen(argv[i], "r+");
if(!f) return 1;
do
{
long j;
int fib = 0;
didread = fread(buf, 1, buflen, f);
for(j=0; j<didread; j++)
{
if(buf[j] == fromc)
{
buf[j] = toc;
fib = 1;
}
}
if(fib)
{
fseek(f, -didread, SEEK_CUR);
fwrite(buf, 1, didread, f);
fseek(f, 0, SEEK_CUR); /* not sure why it needs this to work */
fif = 1;
}
} while(didread == buflen);
fclose(f);
if(fif)
{
if(toc == 10)
printf("# >X ");
else
printf("# X> ");
didctr ++;
}
else
{
printf("# --- ");
didntctr++;
}
printf("%s\n", argv[i]);
}
printf("# Files changed: %d. Files unchanged: %d.\n", didctr, didntctr);
return 0;
}
// ---------- END OF C PROGRAM ----------