summaryrefslogtreecommitdiff
path: root/tools/preproc/c_file.cpp
diff options
context:
space:
mode:
authorSlawter666 <38655737+Slawter666@users.noreply.github.com>2018-09-07 11:50:23 +0100
committerSlawter666 <38655737+Slawter666@users.noreply.github.com>2018-09-07 11:50:23 +0100
commit9dec2bdef891653d10060a45417609c4d31b14c7 (patch)
treef9080cfc922a15570aeeee98d1ff695596e55ccb /tools/preproc/c_file.cpp
parentbc42c5054c335f4de8a6b43135673ce931991c3e (diff)
parentef62393289b7a1d2e20fe195e24830d5c1f2f973 (diff)
Merge branch 'master' of https://github.com/pret/pokeemerald into spritesheet
Diffstat (limited to 'tools/preproc/c_file.cpp')
-rw-r--r--tools/preproc/c_file.cpp92
1 files changed, 50 insertions, 42 deletions
diff --git a/tools/preproc/c_file.cpp b/tools/preproc/c_file.cpp
index 2f4bfea7c..229f568fa 100644
--- a/tools/preproc/c_file.cpp
+++ b/tools/preproc/c_file.cpp
@@ -325,66 +325,74 @@ void CFile::TryConvertIncbin()
m_pos++;
- SkipWhitespace();
+ std::printf("{");
- if (m_buffer[m_pos] != '"')
- RaiseError("expected double quote");
+ while (true)
+ {
+ SkipWhitespace();
- m_pos++;
+ if (m_buffer[m_pos] != '"')
+ RaiseError("expected double quote");
- int startPos = m_pos;
+ m_pos++;
- while (m_buffer[m_pos] != '"')
- {
- if (m_buffer[m_pos] == 0)
- {
- if (m_pos >= m_size)
- RaiseError("unexpected EOF in path string");
- else
- RaiseError("unexpected null character in path string");
- }
+ int startPos = m_pos;
- if (m_buffer[m_pos] == '\r' || m_buffer[m_pos] == '\n')
- RaiseError("unexpected end of line character in path string");
+ while (m_buffer[m_pos] != '"')
+ {
+ if (m_buffer[m_pos] == 0)
+ {
+ if (m_pos >= m_size)
+ RaiseError("unexpected EOF in path string");
+ else
+ RaiseError("unexpected null character in path string");
+ }
- if (m_buffer[m_pos] == '\\')
- RaiseError("unexpected escape in path string");
-
- m_pos++;
- }
+ if (m_buffer[m_pos] == '\r' || m_buffer[m_pos] == '\n')
+ RaiseError("unexpected end of line character in path string");
- std::string path(&m_buffer[startPos], m_pos - startPos);
+ if (m_buffer[m_pos] == '\\')
+ RaiseError("unexpected escape in path string");
+
+ m_pos++;
+ }
- m_pos++;
+ std::string path(&m_buffer[startPos], m_pos - startPos);
- SkipWhitespace();
+ m_pos++;
- if (m_buffer[m_pos] != ')')
- RaiseError("expected ')'");
+ int fileSize;
+ std::unique_ptr<unsigned char[]> buffer = ReadWholeFile(path, fileSize);
- m_pos++;
+ if ((fileSize % size) != 0)
+ RaiseError("Size %d doesn't evenly divide file size %d.\n", size, fileSize);
- std::printf("{");
+ int count = fileSize / size;
+ int offset = 0;
- int fileSize;
- std::unique_ptr<unsigned char[]> buffer = ReadWholeFile(path, fileSize);
+ for (int i = 0; i < count; i++)
+ {
+ int data = ExtractData(buffer, offset, size);
+ offset += size;
- if ((fileSize % size) != 0)
- RaiseError("Size %d doesn't evenly divide file size %d.\n", size, fileSize);
+ if (isSigned)
+ std::printf("%d,", data);
+ else
+ std::printf("%uu,", data);
+ }
- int count = fileSize / size;
- int offset = 0;
+ SkipWhitespace();
- for (int i = 0; i < count; i++)
- {
- int data = ExtractData(buffer, offset, size);
- offset += size;
+ if (m_buffer[m_pos] != ',')
+ break;
- if (isSigned)
- std::printf("%d,", data);
- else
- std::printf("%uu,", data);
+ m_pos++;
}
+
+ if (m_buffer[m_pos] != ')')
+ RaiseError("expected ')'");
+
+ m_pos++;
std::printf("}");
}