Refactor br_ips getline; Update INSTALL.md notes
This commit is contained in:
+11
-1
@@ -42,4 +42,14 @@ If only `.c` or `.s` files were changed, turn off the dependency scanning tempor
|
||||
|
||||
make -j$(nproc) NODEP=1
|
||||
|
||||
**Note:** If the build command is not recognized on Linux, including the Linux environment used within Windows, run `nproc` and replace `$(nproc)` with the returned value (e.g.: `make -j4`). Because `nproc` is not available on macOS, the alternative is `sysctl -n hw.ncpu`.
|
||||
**Note (until further notice):** If this is your first time building Pokemon FireRed, an unmodified copy of Pokemon FireRed is required in the project root under the name `baserom.gba`. To generate this, you should run the following commands:
|
||||
|
||||
make ips_patch -C tools/br_ips
|
||||
head -c 16777216 /dev/zero > tmp.bin
|
||||
tools/br_ips/ips_patch tmp.bin baserom.ips baserom.gba
|
||||
make compare -j$(nproc)
|
||||
cp pokefirered.gba baserom.gba
|
||||
|
||||
Alternatively, you can obtain an unmodified copy of Pokemon FireRed and use that as baserom.gba. Make sure the SHA1 checksum matches with what's provided in [the README](README.md).
|
||||
|
||||
**Note 2:** If the build command is not recognized on Linux, including the Linux environment used within Windows, run `nproc` and replace `$(nproc)` with the returned value (e.g.: `make -j4`). Because `nproc` is not available on macOS, the alternative is `sysctl -n hw.ncpu`.
|
||||
|
||||
+12
-9
@@ -24,26 +24,29 @@ static int getline(char ** lineptr, size_t * n, FILE * stream) {
|
||||
// Static implementation of GNU getline
|
||||
int i = 0;
|
||||
int c;
|
||||
if (n == NULL || lineptr == NULL || stream == NULL) return -1;
|
||||
size_t size = *n;
|
||||
char * buf = *lineptr;
|
||||
if (size == 0) {
|
||||
size = BUFSIZ;
|
||||
buf = realloc(buf, BUFSIZ);
|
||||
if (buf == NULL || size < 4) {
|
||||
size = 128;
|
||||
*lineptr = buf = realloc(buf, 128);
|
||||
}
|
||||
if (buf == NULL) return -1;
|
||||
do {
|
||||
if (feof(stream)) return -1;
|
||||
while (1) {
|
||||
c = getc(stream);
|
||||
if (c == EOF) break;
|
||||
buf[i++] = c;
|
||||
if (i == size -1) {
|
||||
if (c == '\n') break;
|
||||
if (i == size - 1) {
|
||||
size <<= 1;
|
||||
buf = realloc(buf, size);
|
||||
if (buf == NULL) return -1;
|
||||
*lineptr = buf;
|
||||
*n = size;
|
||||
}
|
||||
} while (c != '\n');
|
||||
}
|
||||
if (i == 0) return -1;
|
||||
buf[i] = 0;
|
||||
*lineptr = buf;
|
||||
*n = size;
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user