Changeset 21589 for trunk/tools/wrc/writeres.c
- Timestamp:
- Mar 14, 2011, 5:35:17 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/wrc/writeres.c
r6114 r21589 26 26 #endif 27 27 28 #ifdef MASM 29 #define DIRECTIVE_BYTE "db" 30 #define DIRECTIVE_SHORT "dw" 31 #define DIRECTIVE_LONG "dd" 32 #define DIRECTIVE_ALIGN "align" 33 #define DIRECTIVE_GLOBAL "public" 34 #define LOCAL_PREFIX "" 35 #define LONGFRMT "0%08lxh" 36 #define SHORTFRMT "0%04xh" 37 #define BYTEFRMT "0%02xh" 38 #define HEXBIT31 "80000000h" 39 #define COMMENT_LINE ";" 40 #define OR "or" 41 42 static char s_file_head_str[] = 43 "; This file is generated with wrc version " WRC_FULLVERSION ". Do not edit! */\n" 44 "; Source : %s */\n" 45 "; Cmdline: %s */\n" 46 "; Date : %s */\n" 47 "\n" 28 // GAS // MASM 29 static const char *DIRECTIVE_BYTE[] = { ".byte" , "db" }; 30 static const char *BYTEFRMT[] = { "0x%02x" , "0%02xh" }; 31 static const char *DIRECTIVE_SHORT[] = { ".short" , "dw" }; 32 static const char *DIRECTIVE_SHORT_FULL[] = { "\t.short\t0x%04x\n" , "\tdw\t0%04xh\n" }; 33 static const char *DIRECTIVE_LONG[] = { ".long" , "dd" }; 34 static const char *DIRECTIVE_LONG_FULL[] = { "\t.long\t0x%08lx\n" , "\tdd\t0%08lxh\n" }; 35 static const char *DIRECTIVE_ALIGN[] = { ".align" , "align" }; 36 static const char *DIRECTIVE_GLOBAL[] = { ".globl" , "public" }; 37 static const char *LOCAL_PREFIX[] = { "." , "" }; 38 static const char *HEXBIT31[] = { "0x80000000" , "80000000h" }; 39 static const char *OR[] = { "|" , "or" }; 40 41 static const char *s_file_head_str[] = 42 { 43 // GAS 44 "/* This file is generated with wrc version " WRC_FULLVERSION ". Do not edit! */\n" 45 "/* Source : %s */\n" 46 "/* Cmdline: %s */\n" 47 "/* Date : %s */\n" 48 "\n" 49 "\t.data\n" 50 "\n" 51 , 52 // MASM 53 "; This file is generated with wrc version " WRC_FULLVERSION ". Do not edit! */\n" 54 "; Source : %s */\n" 55 "; Cmdline: %s */\n" 56 "; Date : %s */\n" 57 "\n" 48 58 "\t.386p\n" 49 59 "\t.model flat\n" 50 60 "\t.data\n" 51 "\n" 52 ; 53 54 static char s_file_tail_str[] = 61 "\n" 62 }; 63 64 static const char *s_file_tail_str[] = 65 { 66 // GAS 67 "/* <eof> */\n" 68 "\n" 69 , 70 // MASM 55 71 "\tend\n" 56 "; <eof> */\n" 57 "\n" 58 ; 59 60 #else 61 #define DIRECTIVE_BYTE ".byte" 62 #define DIRECTIVE_SHORT ".short" 63 #define DIRECTIVE_LONG ".long" 64 #define DIRECTIVE_ALIGN ".align" 65 #define DIRECTIVE_GLOBAL ".globl" 66 #define LOCAL_PREFIX "." 67 #define LONGFRMT "0x%08lx" 68 #define SHORTFRMT "0x%04x" 69 #define BYTEFRMT "0x%02x" 70 #define HEXBIT31 "0x80000000" 71 #define COMMENT_LINE 72 #define OR "|" 73 74 static char s_file_head_str[] = 75 "/* This file is generated with wrc version " WRC_FULLVERSION ". Do not edit! */\n" 76 "/* Source : %s */\n" 77 "/* Cmdline: %s */\n" 78 "/* Date : %s */\n" 79 "\n" 80 "\t.data\n" 81 "\n" 82 ; 83 84 static char s_file_tail_str[] = 85 "/* <eof> */\n" 86 "\n" 87 ; 88 89 #endif 90 72 "; <eof> */\n" 73 "\n" 74 }; 75 76 #define TXT(v) (v[masm_mode ? 1 : 0]) 91 77 92 78 static char s_file_autoreg_str[] = … … 105 91 #else 106 92 "\t.section .ctors,\"aw\"\n" 107 "\t "DIRECTIVE_LONG"\t.LAuto_Register\n\n"93 "\t.long\t.LAuto_Register\n\n" 108 94 #endif 109 95 ; … … 235 221 for(i = 0 ; i < lines; i++) 236 222 { 237 fprintf(fp, "\t "DIRECTIVE_BYTE"\t");223 fprintf(fp, "\t%s\t", TXT(DIRECTIVE_BYTE)); 238 224 for(j = 0; j < BYTESPERLINE; j++, idx++) 239 225 { 240 fprintf(fp, ""BYTEFRMT"%s", res->data[idx] & 0xff, 241 j == BYTESPERLINE-1 ? "" : ", "); 226 fprintf(fp, TXT(BYTEFRMT), res->data[idx] & 0xff); 227 if (j != BYTESPERLINE-1) 228 fprintf(fp, ", "); 242 229 } 243 230 fprintf(fp, "\n"); … … 245 232 if(rest) 246 233 { 247 fprintf(fp, "\t "DIRECTIVE_BYTE"\t");234 fprintf(fp, "\t%s\t", TXT(DIRECTIVE_BYTE)); 248 235 for(j = 0; j < rest; j++, idx++) 249 236 { 250 fprintf(fp, ""BYTEFRMT"%s", res->data[idx] & 0xff, 251 j == rest-1 ? "" : ", "); 237 fprintf(fp, TXT(BYTEFRMT), res->data[idx] & 0xff); 238 if (j != rest-1) 239 fprintf(fp, ", "); 252 240 } 253 241 fprintf(fp, "\n"); … … 572 560 int i; 573 561 574 fprintf(fp, "\t "DIRECTIVE_ALIGN"\t4\n");562 fprintf(fp, "\t%s\t4\n", TXT(DIRECTIVE_ALIGN)); 575 563 fprintf(fp, "%s%s:\n", prefix, _PEResTab); 576 fprintf(fp, "\t "DIRECTIVE_GLOBAL"\t%s%s\n", prefix, _PEResTab);564 fprintf(fp, "\t%s\t%s%s\n", TXT(DIRECTIVE_GLOBAL), prefix, _PEResTab); 577 565 /* Flags */ 578 fprintf(fp, "\t "DIRECTIVE_LONG"\t0\n");566 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_LONG)); 579 567 /* Time/Date stamp */ 580 fprintf(fp, "\t"DIRECTIVE_LONG"\t"LONGFRMT"\n", (long)now);568 fprintf(fp, TXT(DIRECTIVE_LONG_FULL), (long)now); 581 569 /* Version */ 582 fprintf(fp, "\t "DIRECTIVE_LONG"\t0\n"); /* FIXME: must version be filled out? */570 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_LONG)); /* FIXME: must version be filled out? */ 583 571 /* # of id entries, # of name entries */ 584 fprintf(fp, "\t "DIRECTIVE_SHORT"\t%d, %d\n", n_name_entries, n_id_entries);572 fprintf(fp, "\t%s\t%d, %d\n", TXT(DIRECTIVE_SHORT), n_name_entries, n_id_entries); 585 573 586 574 /* Write the type level of the tree */ … … 594 582 /* TypeId */ 595 583 if(rcp->type.type == name_ord) 596 fprintf(fp, "\t "DIRECTIVE_LONG"\t%d\n", rcp->type.name.i_name);584 fprintf(fp, "\t%s\t%d\n", TXT(DIRECTIVE_LONG), rcp->type.name.i_name); 597 585 else 598 586 { 599 587 char *name = prep_nid_for_label(&(rcp->type)); 600 fprintf(fp, "\t"DIRECTIVE_LONG"\t(%s_%s_typename - %s%s) "OR" "HEXBIT31"\n", 588 fprintf(fp, "\t%s\t(%s_%s_typename - %s%s) %s %s\n", 589 TXT(DIRECTIVE_LONG), 601 590 prefix, 602 591 name, 603 592 prefix, 604 _PEResTab); 593 _PEResTab, 594 TXT(OR), 595 TXT(HEXBIT31)); 605 596 } 606 597 /* Offset */ 607 598 label = prep_nid_for_label(&(rcp->type)); 608 fprintf(fp, "\t"DIRECTIVE_LONG"\t("LOCAL_PREFIX"L%s - %s%s) "OR" "HEXBIT31"\n", 599 fprintf(fp, "\t%s\t(%sL%s - %s%s) %s %s\n", 600 TXT(DIRECTIVE_LONG), 601 TXT(LOCAL_PREFIX), 609 602 label, 610 603 prefix, 611 _PEResTab); 604 _PEResTab, 605 TXT(OR), 606 TXT(HEXBIT31)); 612 607 } 613 608 … … 624 619 625 620 typelabel = xstrdup(prep_nid_for_label(&(rcp->type))); 626 fprintf(fp, " "LOCAL_PREFIX"L%s:\n", typelabel);627 628 fprintf(fp, "\t "DIRECTIVE_LONG"\t0\n"); /* Flags */629 fprintf(fp, "\t"DIRECTIVE_LONG"\t"LONGFRMT"\n", (long)now); /* TimeDate */630 fprintf(fp, "\t "DIRECTIVE_LONG"\t0\n"); /* FIXME: must version be filled out? */631 fprintf(fp, "\t "DIRECTIVE_SHORT"\t%d, %d\n", rcp->n_name_entries, rcp->n_id_entries);621 fprintf(fp, "%sL%s:\n", TXT(LOCAL_PREFIX), typelabel); 622 623 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_LONG)); /* Flags */ 624 fprintf(fp, TXT(DIRECTIVE_LONG_FULL), (long)now); /* TimeDate */ 625 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_LONG)); /* FIXME: must version be filled out? */ 626 fprintf(fp, "\t%s\t%d, %d\n", TXT(DIRECTIVE_SHORT), rcp->n_name_entries, rcp->n_id_entries); 632 627 for(j = 0; j < rcp->count32; j++) 633 628 { … … 635 630 /* NameId */ 636 631 if(rsc->name->type == name_ord) 637 fprintf(fp, "\t "DIRECTIVE_LONG"\t%d\n", rsc->name->name.i_name);632 fprintf(fp, "\t%s\t%d\n", TXT(DIRECTIVE_LONG), rsc->name->name.i_name); 638 633 else 639 634 { 640 fprintf(fp, "\t"DIRECTIVE_LONG"\t(%s%s_name - %s%s) "OR" "HEXBIT31"\n", 635 fprintf(fp, "\t%s\t(%s%s_name - %s%s) %s %s\n", 636 TXT(DIRECTIVE_LONG), 641 637 prefix, 642 638 rsc->c_name, 643 639 prefix, 644 _PEResTab); 640 _PEResTab, 641 TXT(OR), 642 TXT(HEXBIT31)); 645 643 } 646 644 /* Maybe FIXME: Unescape the tree (ommit "HEXBIT31") and … … 650 648 /* Offset */ 651 649 namelabel = prep_nid_for_label(rsc->name); 652 fprintf(fp, "\t"DIRECTIVE_LONG"\t("LOCAL_PREFIX"L%s_%s - %s%s) "OR" "HEXBIT31"\n", 650 fprintf(fp, "\t%s\t(%sL%s_%s - %s%s) %s %s\n", 651 TXT(DIRECTIVE_LONG), 652 TXT(LOCAL_PREFIX), 653 653 typelabel, 654 654 namelabel, 655 655 prefix, 656 _PEResTab); 656 _PEResTab, 657 TXT(OR), 658 TXT(HEXBIT31)); 657 659 } 658 660 free(typelabel); … … 677 679 678 680 namelabel = xstrdup(prep_nid_for_label(r32cp->rsc[0]->name)); 679 fprintf(fp, " "LOCAL_PREFIX"L%s_%s:\n", typelabel, namelabel);680 681 fprintf(fp, "\t "DIRECTIVE_LONG"\t0\n"); /* Flags */682 fprintf(fp, "\t"DIRECTIVE_LONG"\t"LONGFRMT"\n", (long)now); /* TimeDate */683 fprintf(fp, "\t "DIRECTIVE_LONG"\t0\n"); /* FIXME: must version be filled out? */684 fprintf(fp, "\t "DIRECTIVE_SHORT"\t0, %d\n", r32cp->count);681 fprintf(fp, "%sL%s_%s:\n", TXT(LOCAL_PREFIX), typelabel, namelabel); 682 683 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_LONG)); /* Flags */ 684 fprintf(fp, TXT(DIRECTIVE_LONG_FULL), (long)now); /* TimeDate */ 685 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_LONG)); /* FIXME: must version be filled out? */ 686 fprintf(fp, "\t%s\t0, %d\n", TXT(DIRECTIVE_SHORT), r32cp->count); 685 687 686 688 for(k = 0; k < r32cp->count; k++) … … 689 691 assert(rsc->lan != NULL); 690 692 /* LanguageId */ 691 fprintf(fp, "\t"DIRECTIVE_LONG"\t"LONGFRMT"\n", rsc->lan ? MAKELANGID(rsc->lan->id, rsc->lan->sub) : 0);693 fprintf(fp, TXT(DIRECTIVE_LONG_FULL), rsc->lan ? MAKELANGID(rsc->lan->id, rsc->lan->sub) : 0); 692 694 /* Offset */ 693 fprintf(fp, "\t"DIRECTIVE_LONG"\t"LOCAL_PREFIX"L%s_%s_%d - %s%s\n", 695 fprintf(fp, "\t%s\t%sL%s_%s_%d - %s%s\n", 696 TXT(DIRECTIVE_LONG), 697 TXT(LOCAL_PREFIX), 694 698 typelabel, 695 699 namelabel, … … 705 709 /* Write the resource table itself */ 706 710 fprintf(fp, "%s_ResourceDirectory:\n", prefix); 707 fprintf(fp, "\t "DIRECTIVE_GLOBAL"\t%s_ResourceDirectory\n", prefix);711 fprintf(fp, "\t%s\t%s_ResourceDirectory\n", TXT(DIRECTIVE_GLOBAL), prefix); 708 712 direntries = 0; 709 713 … … 731 735 assert(rsc->lan != NULL); 732 736 733 fprintf(fp, ""LOCAL_PREFIX"L%s_%s_%d:\n", 737 fprintf(fp, "%sL%s_%s_%d:\n", 738 TXT(LOCAL_PREFIX), 734 739 typelabel, 735 740 namelabel, … … 737 742 738 743 /* Data RVA */ 739 fprintf(fp, "\t"DIRECTIVE_LONG"\t%s%s_data - %s%s\n", 744 fprintf(fp, "\t%s\t%s%s_data - %s%s\n", 745 TXT(DIRECTIVE_LONG), 740 746 prefix, 741 747 rsc->c_name, … … 743 749 _PEResTab); 744 750 /* Size */ 745 fprintf(fp, "\t"DIRECTIVE_LONG"\t%d\n", 751 fprintf(fp, "\t%s\t%d\n", 752 TXT(DIRECTIVE_LONG), 746 753 rsc->binres->size - rsc->binres->dataidx); 747 754 /* CodePage */ 748 fprintf(fp, "\t "DIRECTIVE_LONG"\t%ld\n", codepage);755 fprintf(fp, "\t%s\t%ld\n", TXT(DIRECTIVE_LONG), codepage); 749 756 /* Reserved */ 750 fprintf(fp, "\t "DIRECTIVE_LONG"\t0\n");757 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_LONG)); 751 758 752 759 direntries++; … … 772 779 int i, j; 773 780 774 fprintf(fp, "\t "DIRECTIVE_ALIGN"\t4\n");781 fprintf(fp, "\t%s\t4\n", TXT(DIRECTIVE_ALIGN)); 775 782 fprintf(fp, "%s%s:\n", prefix, _NEResTab); 776 fprintf(fp, "\t "DIRECTIVE_GLOBAL"\t%s%s\n", prefix, _NEResTab);783 fprintf(fp, "\t%s\t%s%s\n", TXT(DIRECTIVE_GLOBAL), prefix, _NEResTab); 777 784 778 785 /* AlignmentShift */ 779 fprintf(fp, "\t "DIRECTIVE_SHORT"\t%d\n", alignment_pwr);786 fprintf(fp, "\t%s\t%d\n", TXT(DIRECTIVE_SHORT), alignment_pwr); 780 787 781 788 /* TypeInfo */ … … 786 793 /* TypeId */ 787 794 if(rcp->type.type == name_ord) 788 fprintf(fp, "\t"DIRECTIVE_SHORT"\t"SHORTFRMT"\n", rcp->type.name.i_name | 0x8000);795 fprintf(fp, TXT(DIRECTIVE_SHORT_FULL), rcp->type.name.i_name | 0x8000); 789 796 else 790 fprintf(fp, "\t"DIRECTIVE_SHORT"\t%s_%s_typename - %s%s\n", 797 fprintf(fp, "\t%s\t%s_%s_typename - %s%s\n", 798 TXT(DIRECTIVE_SHORT), 791 799 prefix, 792 800 rcp->type.name.s_name->str.cstr, … … 794 802 _NEResTab); 795 803 /* ResourceCount */ 796 fprintf(fp, "\t "DIRECTIVE_SHORT"\t%d\n", rcp->count);804 fprintf(fp, "\t%s\t%d\n", TXT(DIRECTIVE_SHORT), rcp->count); 797 805 /* Reserved */ 798 fprintf(fp, "\t "DIRECTIVE_LONG"\t0\n");806 fprintf(fp, "\t\t0\n", TXT(DIRECTIVE_LONG)); 799 807 /* NameInfo */ 800 808 for(j = 0; j < rcp->count; j++) … … 809 817 */ 810 818 /* Offset */ 811 fprintf(fp, "\t"DIRECTIVE_SHORT"\t(%s%s_data - %s%s) >> %d\n", 819 fprintf(fp, "\t%s\t(%s%s_data - %s%s) >> %d\n", 820 TXT(DIRECTIVE_SHORT), 812 821 prefix, 813 822 rcp->rscarray[j]->c_name, … … 816 825 alignment_pwr); 817 826 /* Length */ 818 fprintf(fp, "\t"DIRECTIVE_SHORT"\t%d\n", 827 fprintf(fp, "\t%s\t%d\n", 828 TXT(DIRECTIVE_SHORT), 819 829 (rcp->rscarray[j]->binres->size - rcp->rscarray[j]->binres->dataidx + alignment - 1) >> alignment_pwr); 820 830 /* Flags */ 821 fprintf(fp, "\t"DIRECTIVE_SHORT"\t"SHORTFRMT"\n", (WORD)rcp->rscarray[j]->memopt);831 fprintf(fp, TXT(DIRECTIVE_SHORT_FULL), (WORD)rcp->rscarray[j]->memopt); 822 832 /* Id */ 823 833 if(rcp->rscarray[j]->name->type == name_ord) 824 fprintf(fp, "\t"DIRECTIVE_SHORT"\t"SHORTFRMT"\n", rcp->rscarray[j]->name->name.i_name | 0x8000);834 fprintf(fp, TXT(DIRECTIVE_SHORT_FULL), rcp->rscarray[j]->name->name.i_name | 0x8000); 825 835 else 826 fprintf(fp, "\t"DIRECTIVE_SHORT"\t%s%s_name - %s%s\n", 836 fprintf(fp, "\t%s\t%s%s_name - %s%s\n", 837 TXT(DIRECTIVE_SHORT), 827 838 prefix, 828 839 rcp->rscarray[j]->c_name, … … 830 841 _NEResTab); 831 842 /* Handle and Usage */ 832 fprintf(fp, "\t "DIRECTIVE_SHORT"\t0, 0\n");843 fprintf(fp, "\t%s\t0, 0\n", TXT(DIRECTIVE_SHORT)); 833 844 } 834 845 } 835 846 /* EndTypes */ 836 fprintf(fp, "\t "DIRECTIVE_SHORT"\t0\n");847 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_SHORT)); 837 848 } 838 849 … … 913 924 /* This is to end the NE resource table */ 914 925 if(create_dir) 915 fprintf(fp, "\t "DIRECTIVE_BYTE"\t0\n");926 fprintf(fp, "\t%s\t0\n", TXT(DIRECTIVE_BYTE)); 916 927 } 917 928 … … 952 963 p = strchr(s, '\n'); 953 964 if(p) *p = '\0'; 954 fprintf(fo, s_file_head_str, input_name ? input_name : "stdin",965 fprintf(fo, TXT(s_file_head_str), input_name ? input_name : "stdin", 955 966 cmdline, s); 956 967 } … … 972 983 973 984 if(create_dir) 974 fprintf(fo, LOCAL_PREFIX"LResTabEnd:\n");985 fprintf(fo, "%sLResTabEnd:\n", TXT(LOCAL_PREFIX)); 975 986 976 987 if(!indirect_only) 977 988 { 978 989 /* Write the resource data */ 979 #ifdef MASM 990 if (masm_mode) 980 991 fprintf(fo, "\n; Resource binary data */\n\n"); 981 #else992 else 982 993 fprintf(fo, "\n/* Resource binary data */\n\n"); 983 #endif984 994 for(rsc = top; rsc; rsc = rsc->next) 985 995 { … … 987 997 continue; 988 998 989 fprintf(fo, "\t "DIRECTIVE_ALIGN"\t%d\n", win32 ? 4 : alignment);999 fprintf(fo, "\t%s\t%d\n", TXT(DIRECTIVE_ALIGN), win32 ? 4 : alignment); 990 1000 fprintf(fo, "%s%s_data:\n", prefix, rsc->c_name); 991 1001 if(global) 992 fprintf(fo, "\t "DIRECTIVE_GLOBAL"\t%s%s_data\n", prefix, rsc->c_name);1002 fprintf(fo, "\t%s\t%s%s_data\n", TXT(DIRECTIVE_GLOBAL), prefix, rsc->c_name); 993 1003 994 1004 write_s_res(fo, rsc->binres); … … 1000 1010 { 1001 1011 /* Add a resource descriptor for built-in and elf-dlls */ 1002 fprintf(fo, "\t "DIRECTIVE_ALIGN"\t4\n");1012 fprintf(fo, "\t%s\t4\n", TXT(DIRECTIVE_ALIGN)); 1003 1013 fprintf(fo, "%s_ResourceDescriptor:\n", prefix); 1004 fprintf(fo, "\t "DIRECTIVE_GLOBAL"\t%s_ResourceDescriptor\n", prefix);1014 fprintf(fo, "\t%s\t%s_ResourceDescriptor\n", TXT(DIRECTIVE_GLOBAL), prefix); 1005 1015 fprintf(fo, "%s_ResourceTable:\n", prefix); 1006 1016 if(global) 1007 fprintf(fo, "\t "DIRECTIVE_GLOBAL"\t%s_ResourceTable\n", prefix);1008 fprintf(fo, "\t "DIRECTIVE_LONG"\t%s%s\n", prefix, win32 ? _PEResTab : _NEResTab);1017 fprintf(fo, "\t%s\t%s_ResourceTable\n", TXT(DIRECTIVE_GLOBAL), prefix); 1018 fprintf(fo, "\t%s\t%s%s\n", TXT(DIRECTIVE_LONG), prefix, win32 ? _PEResTab : _NEResTab); 1009 1019 fprintf(fo, "%s_NumberOfResources:\n", prefix); 1010 1020 if(global) 1011 fprintf(fo, "\t "DIRECTIVE_GLOBAL"\t%s_NumberOfResources\n", prefix);1012 fprintf(fo, "\t "DIRECTIVE_LONG"\t%d\n", direntries);1021 fprintf(fo, "\t%s\t%s_NumberOfResources\n", TXT(DIRECTIVE_GLOBAL), prefix); 1022 fprintf(fo, "\t%s\t%d\n", TXT(DIRECTIVE_LONG), direntries); 1013 1023 fprintf(fo, "%s_ResourceSectionSize:\n", prefix); 1014 1024 if(global) 1015 fprintf(fo, "\t"DIRECTIVE_GLOBAL"\t%s_ResourceSectionSize\n", prefix); 1016 fprintf(fo, "\t"DIRECTIVE_LONG"\t"LOCAL_PREFIX"LResTabEnd - %s%s\n", prefix, win32 ? _PEResTab : _NEResTab); 1025 fprintf(fo, "\t%s\t%s_ResourceSectionSize\n", TXT(DIRECTIVE_GLOBAL), prefix); 1026 fprintf(fo, "\t%s\t%sLResTabEnd - %s%s\n", 1027 TXT(DIRECTIVE_LONG), TXT(LOCAL_PREFIX), prefix, win32 ? _PEResTab : _NEResTab); 1017 1028 if(win32) 1018 1029 { 1019 1030 fprintf(fo, "%s_ResourcesEntries:\n", prefix); 1020 1031 if(global) 1021 fprintf(fo, "\t "DIRECTIVE_GLOBAL"\t%s_ResourcesEntries\n", prefix);1022 fprintf(fo, "\t "DIRECTIVE_LONG"\t%s_ResourceDirectory\n", prefix);1032 fprintf(fo, "\t%s\t%s_ResourcesEntries\n", TXT(DIRECTIVE_GLOBAL), prefix); 1033 fprintf(fo, "\t%s\t%s_ResourceDirectory\n", TXT(DIRECTIVE_LONG), prefix); 1023 1034 } 1024 1035 } … … 1029 1040 /* Write the indirection structures */ 1030 1041 fprintf(fo, "\n/* Resource indirection structures */\n\n"); 1031 fprintf(fo, "\t "DIRECTIVE_ALIGN"\t4\n");1042 fprintf(fo, "\t%s\t4\n", TXT(DIRECTIVE_ALIGN)); 1032 1043 for(rsc = top; rsc; rsc = rsc->next) 1033 1044 { … … 1071 1082 fprintf(fo, "%s%s:\n", prefix, rsc->c_name); 1072 1083 if(global) 1073 fprintf(fo, "\t"DIRECTIVE_GLOBAL"\t%s%s\n", prefix, rsc->c_name); 1074 fprintf(fo, "\t"DIRECTIVE_LONG"\t%d, %s%s%s, %d, %s%s%s%s, %s%s_data, %d\n", 1084 fprintf(fo, "\t%s\t%s%s\n", TXT(DIRECTIVE_GLOBAL), prefix, rsc->c_name); 1085 fprintf(fo, "\t%s\t%d, %s%s%s, %d, %s%s%s%s, %s%s_data, %d\n", 1086 TXT(DIRECTIVE_LONG), 1075 1087 rsc->name->type == name_ord ? rsc->name->name.i_name : 0, 1076 1088 rsc->name->type == name_ord ? "0" : prefix, … … 1091 1103 /* Write the indirection table */ 1092 1104 fprintf(fo, "/* Resource indirection table */\n\n"); 1093 fprintf(fo, "\t "DIRECTIVE_ALIGN"\t4\n");1105 fprintf(fo, "\t%s\t4\n", TXT(DIRECTIVE_ALIGN)); 1094 1106 fprintf(fo, "%s%s:\n", prefix, _ResTable); 1095 fprintf(fo, "\t "DIRECTIVE_GLOBAL"\t%s%s\n", prefix, _ResTable);1107 fprintf(fo, "\t%s\t%s%s\n", TXT(DIRECTIVE_GLOBAL), prefix, _ResTable); 1096 1108 for(rsc = top; rsc; rsc = rsc->next) 1097 1109 { 1098 fprintf(fo, "\t "DIRECTIVE_LONG"\t%s%s\n", prefix, rsc->c_name);1099 } 1100 fprintf(fo, "\t "DIRECTIVE_LONG"\t0\n");1110 fprintf(fo, "\t%s\t%s%s\n", TXT(DIRECTIVE_LONG), prefix, rsc->c_name); 1111 } 1112 fprintf(fo, "\t%s\t0\n", TXT(DIRECTIVE_LONG)); 1101 1113 fprintf(fo, "\n"); 1102 1114 } … … 1105 1117 fprintf(fo, s_file_autoreg_str, prefix, _ResTable); 1106 1118 1107 fprintf(fo, s_file_tail_str);1119 fprintf(fo, TXT(s_file_tail_str)); 1108 1120 fclose(fo); 1109 1121 }
Note:
See TracChangeset
for help on using the changeset viewer.