mac-rom/Make/ConvertLineEndings
Elliot Nunn 269a655a67 Add a script to convert line endings
Git works better with LFs but MPW mostly requires CRs.
ConvertLineEndings acts only on TEXT files, so run SuggestFileTypes
first. Then:

:Make:ConvertLineEndings > "{TempFolder}FixLines" ; "{TempFolder}FixLines"

ConvertLineEndings is both an MPW script and a C program. The script
builds the fast MPW C Tool, and suggests a command that will use the
Tool to fix all the line endings in the repository.
2017-12-26 09:52:36 +08:00

135 lines
2.3 KiB
Plaintext
Raw 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 ----------