void COFF_PutNameInSectionHeader(SCOFF_SectionHeader & sec, const char * name, CMemoryBuffer & StringTable) { // Function to put a name into SCOFF_SectionHeader. // Put name in string table if longer than 8 characters int len = (int)strlen(name); // Length of name if (len <= 8) { // Short name. store in section header memcpy(sec.Name, name, len); // Pad with zeroes for (; len < 8; len++) sec.Name[len] = 0; } else { // Long name. store in string table sprintf(sec.Name, "/%i", StringTable.PushString(name)); } }
uint32 COFF_PutNameInSymbolTable(SCOFF_SymTableEntry & sym, const char * name, CMemoryBuffer & StringTable) { // Function to put a name into SCOFF_SymTableEntry. // Put name in string table if longer than 8 characters. // Returns index into StringTable if StringTable used int len = (int)strlen(name); // Length of name if (len <= 8) { // Short name. store in section header memcpy(sym.s.Name, name, len); // Pad with zeroes for (; len < 8; len++) sym.s.Name[len] = 0; } else { // Long name. store in string table sym.stringindex.zeroes = 0; sym.stringindex.offset = StringTable.PushString(name); // Second integer = entry into string table return sym.stringindex.offset; } return 0; }