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
|
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
|
// Static implementation of GNU getline
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int c;
|
int c;
|
||||||
|
if (n == NULL || lineptr == NULL || stream == NULL) return -1;
|
||||||
size_t size = *n;
|
size_t size = *n;
|
||||||
char * buf = *lineptr;
|
char * buf = *lineptr;
|
||||||
if (size == 0) {
|
if (buf == NULL || size < 4) {
|
||||||
size = BUFSIZ;
|
size = 128;
|
||||||
buf = realloc(buf, BUFSIZ);
|
*lineptr = buf = realloc(buf, 128);
|
||||||
}
|
}
|
||||||
if (buf == NULL) return -1;
|
if (buf == NULL) return -1;
|
||||||
do {
|
while (1) {
|
||||||
if (feof(stream)) return -1;
|
|
||||||
c = getc(stream);
|
c = getc(stream);
|
||||||
|
if (c == EOF) break;
|
||||||
buf[i++] = c;
|
buf[i++] = c;
|
||||||
if (i == size -1) {
|
if (c == '\n') break;
|
||||||
|
if (i == size - 1) {
|
||||||
size <<= 1;
|
size <<= 1;
|
||||||
buf = realloc(buf, size);
|
buf = realloc(buf, size);
|
||||||
if (buf == NULL) return -1;
|
if (buf == NULL) return -1;
|
||||||
|
*lineptr = buf;
|
||||||
|
*n = size;
|
||||||
}
|
}
|
||||||
} while (c != '\n');
|
}
|
||||||
|
if (i == 0) return -1;
|
||||||
buf[i] = 0;
|
buf[i] = 0;
|
||||||
*lineptr = buf;
|
|
||||||
*n = size;
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user