Index: tools/mkhord.py
===================================================================
--- tools/mkhord.py	(revision 0516fd716e8b774cf526e74c1239ba42ea1dcde0)
+++ tools/mkhord.py	(revision 8f2a85212b7dfe84452d1ed0d1ed23e4d49fa7c1)
@@ -36,5 +36,5 @@
 
 HEADER = """little:
-	char[4] tag            /* 'HORD' */
+	char tag[4]            /* 'HORD' */
 	uint8_t version        /* version */
 	uint8_t encoding       /* encoding */
Index: tools/mktmpfs.py
===================================================================
--- tools/mktmpfs.py	(revision 0516fd716e8b774cf526e74c1239ba42ea1dcde0)
+++ tools/mktmpfs.py	(revision 8f2a85212b7dfe84452d1ed0d1ed23e4d49fa7c1)
@@ -36,5 +36,5 @@
 
 HEADER = """little:
-	char[5] tag  /* 'TMPFS' */
+	char tag[5]  /* 'TMPFS' */
 """
 
@@ -47,5 +47,5 @@
 	uint8_t kind        /* FILE */
 	uint32_t fname_len  /* filename length */
-	char[%d] fname      /* filename */
+	char fname[%d]      /* filename */
 	uint32_t flen       /* file length */
 """
@@ -54,5 +54,5 @@
 	uint8_t kind        /* DIRECTORY */
 	uint32_t fname_len  /* filename length */
-	char[%d] fname      /* filename */
+	char fname[%d]      /* filename */
 """
 
Index: tools/xstruct.py
===================================================================
--- tools/xstruct.py	(revision 0516fd716e8b774cf526e74c1239ba42ea1dcde0)
+++ tools/xstruct.py	(revision 8f2a85212b7dfe84452d1ed0d1ed23e4d49fa7c1)
@@ -59,5 +59,5 @@
 	# Member tags
 	comment = False
-	variable = False
+	variable = None
 	for token in tokens[1:]:
 		if (comment):
@@ -66,32 +66,39 @@
 			continue
 		
-		if (variable):
-			inst.__dict__[token] = None
-			list.append(token)
-			variable = False
+		if (token == "/*"):
+			comment = True
 			continue
 		
-		if (token == "/*"):
-			comment = True
-		elif (token[0:8] == "padding["):
+		if (variable != None):
+			subtokens = token.split("[")
+			
+			if (len(subtokens) > 1):
+				format += "%d" % int(subtokens[1].split("]")[0])
+			
+			format += variable
+			
+			inst.__dict__[subtokens[0]] = None
+			list.append(subtokens[0])
+			
+			variable = None
+			continue
+		
+		if (token[0:8] == "padding["):
 			size = token[8:].split("]")[0]
 			format += "%dx" % int(size)
-		elif (token[0:5] == "char["):
-			size = token[5:].split("]")[0]
-			format += "%ds" % int(size)
-			variable = True
-		else:
-			format += {
-				"uint8_t":  lambda: "B",
-				"uint16_t": lambda: "H",
-				"uint32_t": lambda: "L",
-				"uint64_t": lambda: "Q",
-				
-				"int8_t":   lambda: "b",
-				"int16_t":  lambda: "h",
-				"int32_t":  lambda: "l",
-				"int64_t":  lambda: "q"
-			}[token]()
-			variable = True
+			continue
+		
+		variable = {
+			"char":     lambda: "s",
+			"uint8_t":  lambda: "B",
+			"uint16_t": lambda: "H",
+			"uint32_t": lambda: "L",
+			"uint64_t": lambda: "Q",
+			
+			"int8_t":   lambda: "b",
+			"int16_t":  lambda: "h",
+			"int32_t":  lambda: "l",
+			"int64_t":  lambda: "q"
+		}[token]()
 	
 	inst.__dict__['_format_'] = format
