Patch: [ #3283 ] strcat --> sprintf
authorMartin Poirier <theeth@yahoo.com>
Sun, 19 Feb 2006 18:41:33 +0000 (18:41 +0000)
committerMartin Poirier <theeth@yahoo.com>
Sun, 19 Feb 2006 18:41:33 +0000 (18:41 +0000)
Less yuckiness!

source/blender/src/buttons_shading.c
source/blender/src/header_info.c
source/blender/src/header_ipo.c
source/blender/src/header_view3d.c
source/blender/src/headerbuttons.c
source/blender/src/resources.c

index d27f07fcd9b144c7922ead58db58b25e8e24af0c..c7e4b2ec8c6664f74671a56296162aa16406972f 100644 (file)
@@ -117,39 +117,26 @@ static int packdummy = 0;
 
 static char *mapto_blendtype_pup(void)
 {
+       static char formatstr[] = "|%s %%x%d";
        static char string[1024];
-       char formatstr[1024];
-       char tempstr[1024];
-       
-       strcpy(string, "Blending Mode: %t");
-       strcpy(formatstr, "|%s %%x%d");
-       
-       sprintf(tempstr, formatstr, "Mix", MTEX_BLEND);
-       strcat(string, tempstr);
-
-       sprintf(tempstr, formatstr, "Add", MTEX_ADD);
-       strcat(string, tempstr);
-       sprintf(tempstr, formatstr, "Subtract", MTEX_SUB);
-       strcat(string, tempstr);
-
-       sprintf(tempstr, formatstr, "Multiply", MTEX_MUL);
-       strcat(string, tempstr);
-       sprintf(tempstr, formatstr, "Screen", MTEX_SCREEN);
-       strcat(string, tempstr);
-       sprintf(tempstr, formatstr, "Overlay", MTEX_OVERLAY);
-       strcat(string, tempstr);
-       
-       sprintf(tempstr, formatstr, "Difference", MTEX_DIFF);
-       strcat(string, tempstr);
-       sprintf(tempstr, formatstr, "Divide", MTEX_DIV);
-       strcat(string, tempstr);
-       
-       sprintf(tempstr, formatstr, "Darken", MTEX_DARK);
-       strcat(string, tempstr);
-       sprintf(tempstr, formatstr, "Lighten", MTEX_LIGHT);
-       strcat(string, tempstr);
-
-       return (string);
+       char *str = string;
+       
+       str += sprintf(str, "Mix", MTEX_BLEND);
+
+       str += sprintf(str, "Add", MTEX_ADD);
+       str += sprintf(str, "Subtract", MTEX_SUB);
+
+       str += sprintf(str, "Multiply", MTEX_MUL);
+       str += sprintf(str, "Screen", MTEX_SCREEN);
+       str += sprintf(str, "Overlay", MTEX_OVERLAY);
+       
+       str += sprintf(str, "Difference", MTEX_DIFF);
+       str += sprintf(str, "Divide", MTEX_DIV);
+       
+       str += sprintf(str, "Darken", MTEX_DARK);
+       str += sprintf(str, "Lighten", MTEX_LIGHT);
+
+       return string;
 }
 
 void shade_buttons_change_3d(void)
index 06d75d1ab0ddc92d02fb1c65c78a48bc7441d01c..44289723b2f86068b1418050502a9d56a1001393 100644 (file)
@@ -243,51 +243,37 @@ int buttons_do_unpack()
 {
        int how;
        char menu[2048];
-       char line[128];
+       char *line = menu;
        int ret_value = RET_OK, count = 0;
 
        count = countPackedFiles();
 
-       if (count) {
-               if (count == 1) {
-                       sprintf(menu, "Unpack 1 file%%t");
-               } else {
-                       sprintf(menu, "Unpack %d files%%t", count);
-               }
-               
-               sprintf(line, "|Use files in current directory (create when necessary)%%x%d", PF_USE_LOCAL);
-               strcat(menu, line);
-       
-               sprintf(line, "|Write files to current directory (overwrite existing files)%%x%d", PF_WRITE_LOCAL);
-               strcat(menu, line);
-       
-               sprintf(line, "|%%l|Use files in original location (create when necessary)%%x%d", PF_USE_ORIGINAL);
-               strcat(menu, line);
-       
-               sprintf(line, "|Write files to original location (overwrite existing files)%%x%d", PF_WRITE_ORIGINAL);
-               strcat(menu, line);
-       
-               sprintf(line, "|%%l|Disable AutoPack, keep all packed files %%x%d", PF_KEEP);
-               strcat(menu, line);
-       
-               sprintf(line, "|Ask for each file %%x%d", PF_ASK);
-               strcat(menu, line);
-               
-               how = pupmenu(menu);
-               
-               if(how != -1) {
-                       if (how != PF_KEEP) {
-                               unpackAll(how);
-                       }
-                       G.fileflags &= ~G_AUTOPACK;
-               } else {
-                       ret_value = RET_CANCEL;
-               }
-       } else {
+       if(!count) {
                pupmenu("No packed files. Autopack disabled");
+               return ret_value;
        }
-       
-       return (ret_value);
+       if (count == 1)
+               line += sprintf(line, "Unpack 1 file%%t");
+       else
+               line += sprintf(line, "Unpack %d files%%t", count);
+       
+       line += sprintf(line, "|Use files in current directory (create when necessary)%%x%d", PF_USE_LOCAL);
+       line += sprintf(line, "|Write files to current directory (overwrite existing files)%%x%d", PF_WRITE_LOCAL);
+       line += sprintf(line, "|%%l|Use files in original location (create when necessary)%%x%d", PF_USE_ORIGINAL);
+       line += sprintf(line, "|Write files to original location (overwrite existing files)%%x%d", PF_WRITE_ORIGINAL);
+       line += sprintf(line, "|%%l|Disable AutoPack, keep all packed files %%x%d", PF_KEEP);
+       line += sprintf(line, "|Ask for each file %%x%d", PF_ASK);
+
+       how = pupmenu(menu);
+
+       if(how == -1)
+               ret_value = RET_CANCEL;
+       else {
+               if (how != PF_KEEP) unpackAll(how);
+               G.fileflags &= ~G_AUTOPACK;
+       }
+       
+       return ret_value;
 }
 
 /* here, because of all creator stuff */
@@ -550,8 +536,7 @@ static int write_runtime(char *str, char *exename)
 #endif
        if (ext && (!BLI_testextensie(str, ext))) {
                freestr= MEM_mallocN(strlen(str) + strlen(ext) + 1, "write_runtime_check");
-               strcpy(freestr, str);
-               strcat(freestr, ext);
+               sprintf(freestr,"%s%s", str, ext);
                str= freestr;
        }
 
index dd9a3a66da040a71d772d5602b08d2e6d41e0ea1..9271fe834d42d21275e8d3c81d3ca700f8adb6f9 100644 (file)
@@ -763,67 +763,44 @@ static uiBlock *ipo_selectmenu(void *arg_unused)
 static char *ipo_modeselect_pup(void)
 {
        Object *ob= OBACT;
+       static char formatstring[] = "|%s %%x%d %%i%d";
        static char string[1024];
-       char tmpstr[1024];
-       char formatstring[1024];
+       char *str = string;
+       
+       str += sprintf(str, "Ipo type: %%t");
 
-       strcpy(string, "Ipo type: %t");
-       
-       strcpy(formatstring, "|%s %%x%d %%i%d");
+       if(ob)
+               str += sprintf(str,formatstring, "Object",ID_OB, ICON_OBJECT);
 
-       if(ob) {
-               sprintf(tmpstr,formatstring,"Object",ID_OB, ICON_OBJECT);
-               strcat(string,tmpstr);
-       }
+       if(ob && give_current_material(ob, ob->actcol)) // check for material
+               str += sprintf(str,formatstring, "Material",ID_MA, ICON_MATERIAL);
 
-       if(ob && give_current_material(ob, ob->actcol)) { // check for material
-               sprintf(tmpstr,formatstring,"Material",ID_MA, ICON_MATERIAL);
-               strcat(string,tmpstr);
-       }
+       if(G.scene->world)
+               str += sprintf(str,formatstring, "World",ID_WO, ICON_WORLD);
 
-       if(G.scene->world) {
-               sprintf(tmpstr,formatstring,"World",ID_WO, ICON_WORLD);
-               strcat(string,tmpstr);
-       }
-
-       if(ob && ob->type==OB_CURVE) {
-               sprintf(tmpstr,formatstring,"Path",ID_CU, ICON_CURVE);
-               strcat(string,tmpstr);
-       }
+       if(ob && ob->type==OB_CURVE)
+               str += sprintf(str,formatstring, "Path",ID_CU, ICON_CURVE);
 
-       if(ob && ob->type==OB_CAMERA) {
-               sprintf(tmpstr,formatstring,"Camera",ID_CA, ICON_CAMERA);
-               strcat(string,tmpstr);
-       }
+       if(ob && ob->type==OB_CAMERA)
+               str += sprintf(str,formatstring, "Camera",ID_CA, ICON_CAMERA);
        
-       if(ob && ob->type==OB_LAMP) {
-               sprintf(tmpstr,formatstring,"Lamp",ID_LA, ICON_LAMP);
-               strcat(string,tmpstr);
-       }
+       if(ob && ob->type==OB_LAMP)
+               str += sprintf(str,formatstring, "Lamp",ID_LA, ICON_LAMP);
 
-       if(ob && give_current_texture(ob, ob->actcol)) {
-               sprintf(tmpstr,formatstring,"Texture",ID_TE, ICON_TEXTURE);
-               strcat(string,tmpstr);
-       }
+       if(ob && give_current_texture(ob, ob->actcol))
+               str += sprintf(str,formatstring, "Texture",ID_TE, ICON_TEXTURE);
 
        if(ob){
-               if ELEM4(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_LATTICE) {
-                       sprintf(tmpstr,formatstring,"Shape",ID_KE, ICON_EDIT);
-                       strcat(string,tmpstr);
-               }
-               if (ob->type==OB_ARMATURE){
-                       sprintf(tmpstr,formatstring,"Pose",ID_PO, ICON_POSE_HLT);
-                       strcat(string,tmpstr);
-               }
+               if ELEM4(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_LATTICE)
+                       str += sprintf(str,formatstring, "Shape",ID_KE, ICON_EDIT);
+               if (ob->type==OB_ARMATURE)
+                       str += sprintf(str,formatstring, "Pose",ID_PO, ICON_POSE_HLT);
 #ifdef __CON_IPO
-               sprintf(tmpstr,formatstring,"Constraint",ID_CO, ICON_CONSTRAINT);
-               strcat(string,tmpstr);
+               str += sprintf(str,formatstring, "Constraint",ID_CO, ICON_CONSTRAINT);
 #endif
        }
 
-       sprintf(tmpstr,formatstring,"Sequence",ID_SEQ, ICON_SEQUENCE);
-       strcat(string,tmpstr);
-
+       str += sprintf(str,formatstring, "Sequence",ID_SEQ, ICON_SEQUENCE);
 
        return (string);
 }
index 03788e848f7b3bb7957087e575beaa92cbd00464..1bc5f207cb66688021a5ea18abe1b30c4eb00780 100644 (file)
@@ -3838,14 +3838,12 @@ static char *view3d_modeselect_pup(void)
 {
        Object *ob= OBACT;
        static char string[1024];
-       char formatstr[1024];
-       char tempstr[1024];
-       
-       strcpy(string, "Mode: %t");
-       strcpy(formatstr, "|%s %%x%d %%i%d");
+       static char formatstr[] = "|%s %%x%d %%i%d";
+       char *str = string;
+
+       str += sprintf(str, "Mode: %%t");
        
-       sprintf(tempstr, formatstr, "Object Mode", V3D_OBJECTMODE_SEL, ICON_OBJECT);
-       strcat(string, tempstr);
+       str += sprintf(str, formatstr, "Object Mode", V3D_OBJECTMODE_SEL, ICON_OBJECT);
        
        if(ob==NULL) return string;
        
@@ -3854,27 +3852,21 @@ static char *view3d_modeselect_pup(void)
                || (ob->type == OB_CURVE) || (ob->type == OB_SURF) || (ob->type == OB_FONT)
                || (ob->type == OB_MBALL) || (ob->type == OB_LATTICE))) {
                
-               sprintf(tempstr, formatstr, "Edit Mode", V3D_EDITMODE_SEL, ICON_EDITMODE_HLT);
-               strcat(string, tempstr);
+               str += sprintf(str, formatstr, "Edit Mode", V3D_EDITMODE_SEL, ICON_EDITMODE_HLT);
        }
 
        if (ob->type == OB_MESH) {
        
-               sprintf(tempstr, formatstr, "UV Face Select", V3D_FACESELECTMODE_SEL, ICON_FACESEL_HLT);
-               strcat(string, tempstr);
-               sprintf(tempstr, formatstr, "Vertex Paint", V3D_VERTEXPAINTMODE_SEL, ICON_VPAINT_HLT);
-               strcat(string, tempstr);
-               sprintf(tempstr, formatstr, "Texture Paint", V3D_TEXTUREPAINTMODE_SEL, ICON_TPAINT_HLT);
-               strcat(string, tempstr);
-               sprintf(tempstr, formatstr, "Weight Paint", V3D_WEIGHTPAINTMODE_SEL, ICON_WPAINT_HLT);
-               strcat(string, tempstr);
+               str += sprintf(str, formatstr, "UV Face Select", V3D_FACESELECTMODE_SEL, ICON_FACESEL_HLT);
+               str += sprintf(str, formatstr, "Vertex Paint", V3D_VERTEXPAINTMODE_SEL, ICON_VPAINT_HLT);
+               str += sprintf(str, formatstr, "Texture Paint", V3D_TEXTUREPAINTMODE_SEL, ICON_TPAINT_HLT);
+               str += sprintf(str, formatstr, "Weight Paint", V3D_WEIGHTPAINTMODE_SEL, ICON_WPAINT_HLT);
        }
 
        
        /* if active object is an armature */
        if (ob->type==OB_ARMATURE) {
-               sprintf(tempstr, formatstr, "Pose Mode", V3D_POSEMODE_SEL, ICON_POSE_HLT);
-               strcat(string, tempstr);
+               str += sprintf(str, formatstr, "Pose Mode", V3D_POSEMODE_SEL, ICON_POSE_HLT);
        }
        
        return (string);
@@ -3883,41 +3875,44 @@ static char *view3d_modeselect_pup(void)
 
 static char *drawtype_pup(void)
 {
-       static char string[512];
-
-       strcpy(string, "Draw type: %t"); 
-       strcat(string, "|Bounding Box %x1"); 
-       strcat(string, "|Wireframe %x2");
-       strcat(string, "|Solid %x3");
-       strcat(string, "|Shaded %x4");
-       strcat(string, "|Textured %x5");
-       return (string);
+       static char string[512];
+       char *str = string;
+       
+       str += sprintf(str, "%s", "Draw type: %t"); 
+       str += sprintf(str, "%s", "|Bounding Box %x1"); 
+       str += sprintf(str, "%s", "|Wireframe %x2");
+       str += sprintf(str, "%s", "|Solid %x3");
+       str += sprintf(str, "%s", "|Shaded %x4");
+       str += sprintf(str, "%s", "|Textured %x5");
+       return string;
 }
 static char *around_pup(void)
 {
        static char string[512];
+       char *str = string;
 
-       strcpy(string, "Pivot: %t"); 
-       strcat(string, "|Bounding Box Center %x0"); 
-       strcat(string, "|Median Point %x3");
-       strcat(string, "|3D Cursor %x1");
-       strcat(string, "|Individual Centers %x2");
-       strcat(string, "|Active Object %x4");
-       return (string);
+       str += sprintf(str, "%s", "Pivot: %t"); 
+       str += sprintf(str, "%s", "|Bounding Box Center %x0"); 
+       str += sprintf(str, "%s", "|Median Point %x3");
+       str += sprintf(str, "%s", "|3D Cursor %x1");
+       str += sprintf(str, "%s", "|Individual Centers %x2");
+       str += sprintf(str, "%s", "|Active Object %x4");
+       return string;
 }
 
 static char *propfalloff_pup(void)
 {
        static char string[512];
-
-       strcpy(string, "Falloff: %t"); 
-       strcat(string, "|Smooth Falloff%x0");
-       strcat(string, "|Sphere Falloff%x1");
-       strcat(string, "|Root Falloff%x2"); 
-       strcat(string, "|Sharp Falloff%x3"); 
-       strcat(string, "|Linear Falloff%x4");
-       strcat(string, "|Constant, No Falloff%x5");
-       return (string);
+       char *str = string;
+       
+       str += sprintf(str, "%s", "Falloff: %t"); 
+       str += sprintf(str, "%s", "|Smooth Falloff%x0");
+       str += sprintf(str, "%s", "|Sphere Falloff%x1");
+       str += sprintf(str, "%s", "|Root Falloff%x2"); 
+       str += sprintf(str, "%s", "|Sharp Falloff%x3"); 
+       str += sprintf(str, "%s", "|Linear Falloff%x4");
+       str += sprintf(str, "%s", "|Constant, No Falloff%x5");
+       return string;
 }
 
 
index 8955794b7559bc517ff0c99c709b2bbaa93fc24e..ed3cadc9dbce6b7a9106fabb06ccb82a32a238d4 100644 (file)
 char *windowtype_pup(void)
 {
        static char string[1024];
+       char *str = string;
 
-       strcpy(string, "Window type:%t"); //14
-       strcat(string, "|3D View %x1"); //30
+       str += sprintf(str, "%s", "Window type:%t"); //14
+       str += sprintf(str, "%s", "|3D View %x1"); //30
 
-       strcat(string, "|%l"); // 33
+       str += sprintf(str, "%s", "|%l"); // 33
 
-       strcat(string, "|Ipo Curve Editor %x2"); //54
-       strcat(string, "|Action Editor %x12"); //73
-       strcat(string, "|NLA Editor %x13"); //94
+       str += sprintf(str, "%s", "|Ipo Curve Editor %x2"); //54
+       str += sprintf(str, "%s", "|Action Editor %x12"); //73
+       str += sprintf(str, "%s", "|NLA Editor %x13"); //94
 
-       strcat(string, "|%l"); //97
+       str += sprintf(str, "%s", "|%l"); //97
 
-       strcat(string, "|UV/Image Editor %x6"); //117
+       str += sprintf(str, "%s", "|UV/Image Editor %x6"); //117
 
-       strcat(string, "|Video Sequence Editor %x8"); //143
-       strcat(string, "|Timeline %x15"); //163
-       strcat(string, "|Audio Window %x11"); //163
-       strcat(string, "|Text Editor %x9"); //179
+       str += sprintf(str, "%s", "|Video Sequence Editor %x8"); //143
+       str += sprintf(str, "%s", "|Timeline %x15"); //163
+       str += sprintf(str, "%s", "|Audio Window %x11"); //163
+       str += sprintf(str, "%s", "|Text Editor %x9"); //179
 
-       strcat(string, "|%l"); //192
+       str += sprintf(str, "%s", "|%l"); //192
 
 
-       strcat(string, "|User Preferences %x7"); //213
-       strcat(string, "|Outliner %x3"); //232
-       strcat(string, "|Buttons Window %x4"); //251
-       strcat(string, "|Node Editor %x16");
+       str += sprintf(str, "%s", "|User Preferences %x7"); //213
+       str += sprintf(str, "%s", "|Outliner %x3"); //232
+       str += sprintf(str, "%s", "|Buttons Window %x4"); //251
+       str += sprintf(str, "%s", "|Node Editor %x16");
 
-       strcat(string, "|%l"); //254
+       str += sprintf(str, "%s", "|%l"); //254
 
-       strcat(string, "|Image Browser %x10"); //273
-       strcat(string, "|File Browser %x5"); //290
+       str += sprintf(str, "%s", "|Image Browser %x10"); //273
+       str += sprintf(str, "%s", "|File Browser %x5"); //290
 
-       strcat(string, "|%l"); //293
+       str += sprintf(str, "%s", "|%l"); //293
 
-       strcat(string, "|Scripts Window %x14"); //313
+       str += sprintf(str, "%s", "|Scripts Window %x14"); //313
 
        return (string);
 }
index a5dbe1a5ba28acd357f2c6e9476ac5997147bbf6..621e0575b2519eab57b087a68af21624911c3314 100644 (file)
@@ -492,137 +492,139 @@ void BIF_InitTheme(void)
 char *BIF_ThemeColorsPup(int spacetype)
 {
        char *cp= MEM_callocN(32*32, "theme pup");
-       char str[32];
+       char *str = cp;
        
        if(spacetype==0) {
-               sprintf(str, "Outline %%x%d|", TH_BUT_OUTLINE); strcat(cp, str);
-               sprintf(str, "Neutral %%x%d|", TH_BUT_NEUTRAL); strcat(cp, str);
-               sprintf(str, "Action %%x%d|", TH_BUT_ACTION); strcat(cp, str);
-               sprintf(str, "Setting %%x%d|", TH_BUT_SETTING); strcat(cp, str);
-               sprintf(str, "Special Setting 1%%x%d|", TH_BUT_SETTING1); strcat(cp, str);
-               sprintf(str, "Special Setting 2 %%x%d|", TH_BUT_SETTING2); strcat(cp, str);
-               sprintf(str, "Number Input %%x%d|", TH_BUT_NUM); strcat(cp, str);
-               sprintf(str, "Text Input %%x%d|", TH_BUT_TEXTFIELD); strcat(cp, str);
-               sprintf(str, "Text Input Highlight %%x%d|", TH_BUT_TEXTFIELD_HI); strcat(cp, str);
-               sprintf(str, "Popup %%x%d|", TH_BUT_POPUP); strcat(cp, str);
-               sprintf(str, "Text %%x%d|", TH_BUT_TEXT); strcat(cp, str);
-               sprintf(str, "Text Highlight %%x%d|", TH_BUT_TEXT_HI); strcat(cp, str);
-                       strcat(cp,"%l|");
-               sprintf(str, "Menu Background %%x%d|", TH_MENU_BACK); strcat(cp, str);
-               sprintf(str, "Menu Item %%x%d|", TH_MENU_ITEM); strcat(cp, str);
-               sprintf(str, "Menu Item Highlight %%x%d|", TH_MENU_HILITE); strcat(cp, str);
-               sprintf(str, "Menu Text %%x%d|", TH_MENU_TEXT); strcat(cp, str);
-               sprintf(str, "Menu Text Highlight %%x%d|", TH_MENU_TEXT_HI); strcat(cp, str);
-               strcat(cp,"%l|");
-               sprintf(str, "Drawtype %%x%d|", TH_BUT_DRAWTYPE); strcat(cp, str);
+               str += sprintf(str, "Outline %%x%d|", TH_BUT_OUTLINE);
+               str += sprintf(str, "Neutral %%x%d|", TH_BUT_NEUTRAL);
+               str += sprintf(str, "Action %%x%d|", TH_BUT_ACTION);
+               str += sprintf(str, "Setting %%x%d|", TH_BUT_SETTING);
+               str += sprintf(str, "Special Setting 1%%x%d|", TH_BUT_SETTING1);
+               str += sprintf(str, "Special Setting 2 %%x%d|", TH_BUT_SETTING2);
+               str += sprintf(str, "Number Input %%x%d|", TH_BUT_NUM);
+               str += sprintf(str, "Text Input %%x%d|", TH_BUT_TEXTFIELD);
+               str += sprintf(str, "Text Input Highlight %%x%d|", TH_BUT_TEXTFIELD_HI);
+               str += sprintf(str, "Popup %%x%d|", TH_BUT_POPUP);
+               str += sprintf(str, "Text %%x%d|", TH_BUT_TEXT);
+               str += sprintf(str, "Text Highlight %%x%d|", TH_BUT_TEXT_HI);
+               str += sprintf(str, "%%l|");
+               str += sprintf(str, "Menu Background %%x%d|", TH_MENU_BACK);
+               str += sprintf(str, "Menu Item %%x%d|", TH_MENU_ITEM);
+               str += sprintf(str, "Menu Item Highlight %%x%d|", TH_MENU_HILITE);
+               str += sprintf(str, "Menu Text %%x%d|", TH_MENU_TEXT);
+               str += sprintf(str, "Menu Text Highlight %%x%d|", TH_MENU_TEXT_HI);
+               str += sprintf(str, "%l|");
+               str += sprintf(str, "Drawtype %%x%d|", TH_BUT_DRAWTYPE);
        }
        else {
                // first defaults for each space
-               sprintf(str, "Background %%x%d|", TH_BACK); strcat(cp, str);
-               sprintf(str, "Text %%x%d|", TH_TEXT); strcat(cp, str);
-               sprintf(str, "Text Highlight %%x%d|", TH_TEXT_HI); strcat(cp, str);
-               sprintf(str, "Header %%x%d|", TH_HEADER); strcat(cp, str);
+               str += sprintf(str, "Background %%x%d|", TH_BACK);
+               str += sprintf(str, "Text %%x%d|", TH_TEXT);
+               str += sprintf(str, "Text Highlight %%x%d|", TH_TEXT_HI);
+               str += sprintf(str, "Header %%x%d|", TH_HEADER);
                
-               if(spacetype==SPACE_VIEW3D) {
-                       sprintf(str, "Panel %%x%d|", TH_PANEL); strcat(cp, str);
-                       strcat(cp,"%l|");
-                       sprintf(str, "Grid %%x%d|", TH_GRID); strcat(cp, str);
-                       sprintf(str, "Wire %%x%d|", TH_WIRE); strcat(cp, str);
-                       sprintf(str, "Lamp %%x%d|", TH_LAMP); strcat(cp, str);
-                       sprintf(str, "Object Selected %%x%d|", TH_SELECT); strcat(cp, str);
-                       sprintf(str, "Object Active %%x%d|", TH_ACTIVE); strcat(cp, str);
-                       sprintf(str, "Transform %%x%d|", TH_TRANSFORM); strcat(cp, str);
-                       strcat(cp,"%l|");
-                       sprintf(str, "Vertex %%x%d|", TH_VERTEX); strcat(cp, str);
-                       sprintf(str, "Vertex Selected %%x%d|", TH_VERTEX_SELECT); strcat(cp, str);
-                       sprintf(str, "Vertex Size %%x%d|", TH_VERTEX_SIZE); strcat(cp, str);
-                       sprintf(str, "Edge Selected %%x%d|", TH_EDGE_SELECT); strcat(cp, str);
-                       sprintf(str, "Edge Seam %%x%d|", TH_EDGE_SEAM); strcat(cp, str);
-                       sprintf(str, "Edge UV Face Select %%x%d|", TH_EDGE_FACESEL); strcat(cp, str);
-                       sprintf(str, "Face (transp) %%x%d|", TH_FACE); strcat(cp, str);
-                       sprintf(str, "Face Selected (transp) %%x%d|", TH_FACE_SELECT); strcat(cp, str);
-                       sprintf(str, "Face Dot Selected %%x%d|", TH_FACE_DOT); strcat(cp, str);
-                       sprintf(str, "Face Dot Size %%x%d|", TH_FACEDOT_SIZE); strcat(cp, str);
-                       sprintf(str, "Normal %%x%d|", TH_NORMAL); strcat(cp, str);
-                       sprintf(str, "Bone Solid %%x%d|", TH_BONE_SOLID); strcat(cp, str);
-                       sprintf(str, "Bone Pose %%x%d", TH_BONE_POSE); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_IPO) {
-                       sprintf(str, "Panel %%x%d|", TH_PANEL); strcat(cp, str);
-                       strcat(cp,"%l|");
-                       sprintf(str, "Grid %%x%d|", TH_GRID); strcat(cp, str);
-                       sprintf(str, "Window Sliders %%x%d|", TH_SHADE1); strcat(cp, str);
-                       sprintf(str, "Ipo Channels %%x%d|", TH_SHADE2); strcat(cp, str);
-                       sprintf(str, "Vertex %%x%d|", TH_VERTEX); strcat(cp, str);
-                       sprintf(str, "Vertex Selected %%x%d|", TH_VERTEX_SELECT); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_FILE) {
-                       sprintf(str, "Selected file %%x%d", TH_HILITE); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_NLA) {
-                       //sprintf(str, "Panel %%x%d|", TH_PANEL); strcat(cp, str);
-                       strcat(cp,"%l|");
-                       sprintf(str, "Grid %%x%d|", TH_GRID); strcat(cp, str);
-                       sprintf(str, "View Sliders %%x%d|", TH_SHADE1); strcat(cp, str);
-                       sprintf(str, "Bars %%x%d|", TH_SHADE2); strcat(cp, str);
-                       sprintf(str, "Bars selected %%x%d|", TH_HILITE); strcat(cp, str);
-                       sprintf(str, "Strips %%x%d|", TH_STRIP); strcat(cp, str);
-                       sprintf(str, "Strips selected %%x%d|", TH_STRIP_SELECT); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_ACTION) {
-                       //sprintf(str, "Panel %%x%d|", TH_PANEL); strcat(cp, str);
-                       strcat(cp,"%l|");
-                       sprintf(str, "Grid %%x%d|", TH_GRID); strcat(cp, str);
-                       sprintf(str, "RVK Sliders %%x%d|", TH_FACE); strcat(cp, str);
-                       sprintf(str, "View Sliders %%x%d|", TH_SHADE1); strcat(cp, str);
-                       sprintf(str, "Channels %%x%d|", TH_SHADE2); strcat(cp, str);
-                       sprintf(str, "Channels Selected %%x%d|", TH_HILITE); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_IMAGE) {
-                       strcat(cp,"%l|");
-                       sprintf(str, "Vertex %%x%d|", TH_VERTEX); strcat(cp, str);
-                       sprintf(str, "Vertex Selected %%x%d|", TH_VERTEX_SELECT); strcat(cp, str);
-                       sprintf(str, "Vertex Size %%x%d|", TH_VERTEX_SIZE); strcat(cp, str);
-                       sprintf(str, "Face %%x%d|", TH_FACE); strcat(cp, str);
-                       sprintf(str, "Face Selected %%x%d", TH_FACE_SELECT); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_SEQ) {
-                       sprintf(str, "Grid %%x%d|", TH_GRID); strcat(cp, str);
-                       sprintf(str, "Window Sliders %%x%d|", TH_SHADE1); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_SOUND) {
-                       sprintf(str, "Grid %%x%d|", TH_GRID); strcat(cp, str);
-                       sprintf(str, "Window Slider %%x%d|", TH_SHADE1); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_BUTS) {
-                       sprintf(str, "Panel %%x%d|", TH_PANEL); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_IMASEL) {
-                       sprintf(str, "Main Shade %%x%d|", TH_SHADE1); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_TEXT) {
-                       sprintf(str, "Scroll Bar %%x%d|", TH_SHADE1); strcat(cp, str);
-                       sprintf(str, "Selected Text %%x%d|", TH_SHADE2); strcat(cp, str);
-                       sprintf(str, "Cursor %%x%d|", TH_HILITE); strcat(cp, str);
-                       strcat(cp,"%l|");
-                       sprintf(str, "Syntax Builtin %%x%d|", TH_SYNTAX_B); strcat(cp, str);
-                       sprintf(str, "Syntax Special %%x%d|", TH_SYNTAX_V); strcat(cp, str);
-                       sprintf(str, "Syntax Comment %%x%d|", TH_SYNTAX_C); strcat(cp, str);
-                       sprintf(str, "Syntax Strings %%x%d|", TH_SYNTAX_L); strcat(cp, str);
-                       sprintf(str, "Syntax Numbers %%x%d|", TH_SYNTAX_N); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_TIME) {
-                       sprintf(str, "Grid %%x%d|", TH_GRID); strcat(cp, str);
-               }
-               else if(spacetype==SPACE_NODE) {
-                       sprintf(str, "Wires %%x%d|", TH_WIRE); strcat(cp, str);
-                       sprintf(str, "Wires Select %%x%d|", TH_EDGE_SELECT); strcat(cp, str);
-                       strcat(cp,"%l|");
-                       sprintf(str, "Node Backdrop %%x%d|", TH_NODE); strcat(cp, str);
-                       sprintf(str, "In/Out Node %%x%d|", TH_NODE_IN_OUT); strcat(cp, str);
-                       sprintf(str, "Generator Node %%x%d|", TH_NODE_GENERATOR); strcat(cp, str);
-                       sprintf(str, "Operator Node %%x%d|", TH_NODE_OPERATOR); strcat(cp, str);
-                       sprintf(str, "Group Node %%x%d|", TH_NODE_GROUP); strcat(cp, str);
+               switch(spacetype) {
+               case SPACE_VIEW3D:
+                       str += sprintf(str, "Panel %%x%d|", TH_PANEL);
+                       str += sprintf(str, "%l|");
+                       str += sprintf(str, "Grid %%x%d|", TH_GRID);
+                       str += sprintf(str, "Wire %%x%d|", TH_WIRE);
+                       str += sprintf(str, "Lamp %%x%d|", TH_LAMP);
+                       str += sprintf(str, "Object Selected %%x%d|", TH_SELECT);
+                       str += sprintf(str, "Object Active %%x%d|", TH_ACTIVE);
+                       str += sprintf(str, "Transform %%x%d|", TH_TRANSFORM);
+                       str += sprintf(str, "%l|");
+                       str += sprintf(str, "Vertex %%x%d|", TH_VERTEX);
+                       str += sprintf(str, "Vertex Selected %%x%d|", TH_VERTEX_SELECT);
+                       str += sprintf(str, "Vertex Size %%x%d|", TH_VERTEX_SIZE);
+                       str += sprintf(str, "Edge Selected %%x%d|", TH_EDGE_SELECT);
+                       str += sprintf(str, "Edge Seam %%x%d|", TH_EDGE_SEAM);
+                       str += sprintf(str, "Edge UV Face Select %%x%d|", TH_EDGE_FACESEL);
+                       str += sprintf(str, "Face (transp) %%x%d|", TH_FACE);
+                       str += sprintf(str, "Face Selected (transp) %%x%d|", TH_FACE_SELECT);
+                       str += sprintf(str, "Face Dot Selected %%x%d|", TH_FACE_DOT);
+                       str += sprintf(str, "Face Dot Size %%x%d|", TH_FACEDOT_SIZE);
+                       str += sprintf(str, "Normal %%x%d|", TH_NORMAL);
+                       str += sprintf(str, "Bone Solid %%x%d|", TH_BONE_SOLID);
+                       str += sprintf(str, "Bone Pose %%x%d", TH_BONE_POSE);
+                       break;
+               case SPACE_IPO:
+                       str += sprintf(str, "Panel %%x%d|", TH_PANEL);
+                       str += sprintf(str, "%l|");
+                       str += sprintf(str, "Grid %%x%d|", TH_GRID);
+                       str += sprintf(str, "Window Sliders %%x%d|", TH_SHADE1);
+                       str += sprintf(str, "Ipo Channels %%x%d|", TH_SHADE2);
+                       str += sprintf(str, "Vertex %%x%d|", TH_VERTEX);
+                       str += sprintf(str, "Vertex Selected %%x%d|", TH_VERTEX_SELECT);
+                       break;
+               case SPACE_FILE:
+                       str += sprintf(str, "Selected file %%x%d", TH_HILITE);
+                       break;
+               case SPACE_NLA:
+                       //str += sprintf(str, "Panel %%x%d|", TH_PANEL);
+                       str += sprintf(str, "%l|");
+                       str += sprintf(str, "Grid %%x%d|", TH_GRID);
+                       str += sprintf(str, "View Sliders %%x%d|", TH_SHADE1);
+                       str += sprintf(str, "Bars %%x%d|", TH_SHADE2);
+                       str += sprintf(str, "Bars selected %%x%d|", TH_HILITE);
+                       str += sprintf(str, "Strips %%x%d|", TH_STRIP);
+                       str += sprintf(str, "Strips selected %%x%d|", TH_STRIP_SELECT);
+                       break;
+               case SPACE_ACTION:
+                       //str += sprintf(str, "Panel %%x%d|", TH_PANEL);
+                       str += sprintf(str, "%l|");
+                       str += sprintf(str, "Grid %%x%d|", TH_GRID);
+                       str += sprintf(str, "RVK Sliders %%x%d|", TH_FACE);
+                       str += sprintf(str, "View Sliders %%x%d|", TH_SHADE1);
+                       str += sprintf(str, "Channels %%x%d|", TH_SHADE2);
+                       str += sprintf(str, "Channels Selected %%x%d|", TH_HILITE);
+                       break;
+               case SPACE_IMAGE:
+                       str += sprintf(str, "%l|");
+                       str += sprintf(str, "Vertex %%x%d|", TH_VERTEX);
+                       str += sprintf(str, "Vertex Selected %%x%d|", TH_VERTEX_SELECT);
+                       str += sprintf(str, "Vertex Size %%x%d|", TH_VERTEX_SIZE);
+                       str += sprintf(str, "Face %%x%d|", TH_FACE);
+                       str += sprintf(str, "Face Selected %%x%d", TH_FACE_SELECT);
+                       break;
+               case SPACE_SEQ:
+                       str += sprintf(str, "Grid %%x%d|", TH_GRID);
+                       str += sprintf(str, "Window Sliders %%x%d|", TH_SHADE1);
+                       break;
+               case SPACE_SOUND:
+                       str += sprintf(str, "Grid %%x%d|", TH_GRID);
+                       str += sprintf(str, "Window Slider %%x%d|", TH_SHADE1);
+                       break;
+               case SPACE_BUTS:
+                       str += sprintf(str, "Panel %%x%d|", TH_PANEL);
+                       break;
+               case SPACE_IMASEL:
+                       str += sprintf(str, "Main Shade %%x%d|", TH_SHADE1);
+                       break;
+               case SPACE_TEXT:
+                       str += sprintf(str, "Scroll Bar %%x%d|", TH_SHADE1);
+                       str += sprintf(str, "Selected Text %%x%d|", TH_SHADE2);
+                       str += sprintf(str, "Cursor %%x%d|", TH_HILITE);
+                       str += sprintf(str, "%l|");
+                       str += sprintf(str, "Syntax Builtin %%x%d|", TH_SYNTAX_B);
+                       str += sprintf(str, "Syntax Special %%x%d|", TH_SYNTAX_V);
+                       str += sprintf(str, "Syntax Comment %%x%d|", TH_SYNTAX_C);
+                       str += sprintf(str, "Syntax Strings %%x%d|", TH_SYNTAX_L);
+                       str += sprintf(str, "Syntax Numbers %%x%d|", TH_SYNTAX_N);
+                       break;
+               case SPACE_TIME:
+                       str += sprintf(str, "Grid %%x%d|", TH_GRID);
+                       break;
+               case SPACE_NODE:
+                       str += sprintf(str, "Wires %%x%d|", TH_WIRE);
+                       str += sprintf(str, "Wires Select %%x%d|", TH_EDGE_SELECT);
+                       str += sprintf(str, "%l|");
+                       str += sprintf(str, "Node Backdrop %%x%d|", TH_NODE);
+                       str += sprintf(str, "In/Out Node %%x%d|", TH_NODE_IN_OUT);
+                       str += sprintf(str, "Generator Node %%x%d|", TH_NODE_GENERATOR);
+                       str += sprintf(str, "Operator Node %%x%d|", TH_NODE_OPERATOR);
+                       str += sprintf(str, "Group Node %%x%d|", TH_NODE_GROUP);
+                       break;
                }
        }
        return cp;