Changeset 25009 in vbox
- Timestamp:
- Nov 26, 2009 2:50:47 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 55320
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bldprogs/bin2c.c
r21295 r25009 71 71 FILE *pFileIn; 72 72 FILE *pFileOut; 73 int i ;73 int iArg; 74 74 size_t cbMin = 0; 75 75 size_t cbMax = ~0U; … … 88 88 return usage(argv[0]); 89 89 90 for (i = 1; i < argc; i++)91 { 92 if (!strcmp(argv[i ], "-min"))93 { 94 if (++i >= argc)95 return usage(argv[0]); 96 cbMin = 1024 * strtoul(argv[i ], NULL, 0);97 } 98 else if (!strcmp(argv[i ], "-max"))99 { 100 if (++i >= argc)101 return usage(argv[0]); 102 cbMax = 1024 * strtoul(argv[i ], NULL, 0);103 } 104 else if (!strcmp(argv[i ], "-mask"))105 { 106 if (++i >= argc)107 return usage(argv[0]); 108 uMask = strtoul(argv[i ], NULL, 0);109 } 110 else if (!strcmp(argv[i ], "-ascii"))90 for (iArg = 1; iArg < argc; iArg++) 91 { 92 if (!strcmp(argv[iArg], "-min")) 93 { 94 if (++iArg >= argc) 95 return usage(argv[0]); 96 cbMin = 1024 * strtoul(argv[iArg], NULL, 0); 97 } 98 else if (!strcmp(argv[iArg], "-max")) 99 { 100 if (++iArg >= argc) 101 return usage(argv[0]); 102 cbMax = 1024 * strtoul(argv[iArg], NULL, 0); 103 } 104 else if (!strcmp(argv[iArg], "-mask")) 105 { 106 if (++iArg >= argc) 107 return usage(argv[0]); 108 uMask = strtoul(argv[iArg], NULL, 0); 109 } 110 else if (!strcmp(argv[iArg], "-ascii")) 111 111 { 112 112 fAscii = 1; 113 113 } 114 else if (!strcmp(argv[i ], "-export"))114 else if (!strcmp(argv[iArg], "-export")) 115 115 { 116 116 fExport = 1; 117 117 } 118 else if (!strcmp(argv[i ], "-width"))119 { 120 if (++i >= argc)121 return usage(argv[0]); 122 cbLine = strtoul(argv[i ], NULL, 0);118 else if (!strcmp(argv[iArg], "-width")) 119 { 120 if (++iArg >= argc) 121 return usage(argv[0]); 122 cbLine = strtoul(argv[iArg], NULL, 0); 123 123 if (cbLine == 0 || cbLine > sizeof(abLine)) 124 124 { 125 125 fprintf(stderr, "%s: '%s' is too wide, max %u\n", 126 argv[0], argv[i ], (unsigned)sizeof(abLine));126 argv[0], argv[iArg], (unsigned)sizeof(abLine)); 127 127 return 1; 128 128 } 129 129 } 130 else if (!strcmp(argv[i ], "-break"))131 { 132 if (++i >= argc)133 return usage(argv[0]); 134 iBreakEvery = strtol(argv[i ], NULL, 0);130 else if (!strcmp(argv[iArg], "-break")) 131 { 132 if (++iArg >= argc) 133 return usage(argv[0]); 134 iBreakEvery = strtol(argv[iArg], NULL, 0); 135 135 if (iBreakEvery <= 0 && iBreakEvery != -1) 136 136 { 137 137 fprintf(stderr, "%s: -break value '%s' is not >= 1 or -1.\n", 138 argv[0], argv[i ]);138 argv[0], argv[iArg]); 139 139 return 1; 140 140 } 141 141 } 142 else if (i == argc - 3)142 else if (iArg == argc - 3) 143 143 break; 144 144 else 145 145 { 146 146 fprintf(stderr, "%s: syntax error: Unknown argument '%s'\n", 147 argv[0], argv[i ]);147 argv[0], argv[iArg]); 148 148 return usage(argv[0]); 149 149 } 150 150 } 151 151 152 pFileIn = fopen(argv[i +1], "rb");152 pFileIn = fopen(argv[iArg+1], "rb"); 153 153 if (!pFileIn) 154 154 { 155 fprintf(stderr, "Error: failed to open input file '%s'!\n", argv[i +1]);155 fprintf(stderr, "Error: failed to open input file '%s'!\n", argv[iArg+1]); 156 156 return 1; 157 157 } 158 158 159 pFileOut = fopen(argv[i +2], "wb");159 pFileOut = fopen(argv[iArg+2], "wb"); 160 160 if (!pFileOut) 161 161 { 162 fprintf(stderr, "Error: failed to open output file '%s'!\n", argv[i +2]);162 fprintf(stderr, "Error: failed to open output file '%s'!\n", argv[iArg+2]); 163 163 fclose(pFileIn); 164 164 return 1; … … 178 178 "%sconst unsigned char%s g_ab%s[] =\n" 179 179 "{\n", 180 argv[i +1], argv[0], fExport ? "DECLEXPORT(" : "", fExport ? ")" : "", argv[i]);180 argv[iArg+1], argv[0], fExport ? "DECLEXPORT(" : "", fExport ? ")" : "", argv[iArg]); 181 181 182 182 /* check size restrictions */ … … 192 192 while ((cbRead = fread(&abLine[0], 1, cbLine, pFileIn)) > 0) 193 193 { 194 size_t i;194 size_t j; 195 195 196 196 if ( iBreakEvery > 0 … … 200 200 201 201 fprintf(pFileOut, " "); 202 for ( i = 0; i < cbRead; i++)203 fprintf(pFileOut, " 0x%02x,", abLine[ i]);204 for (; i < cbLine; i++)202 for (j = 0; j < cbRead; j++) 203 fprintf(pFileOut, " 0x%02x,", abLine[j]); 204 for (; j < cbLine; j++) 205 205 fprintf(pFileOut, " "); 206 206 if (fAscii) 207 207 { 208 208 fprintf(pFileOut, " /* 0x%08lx: ", (long)off); 209 for ( i = 0; i < cbRead; i++)209 for (j = 0; j < cbRead; j++) 210 210 /* be careful with '/' prefixed/followed by a '*'! */ 211 211 fprintf(pFileOut, "%c", 212 isprint(abLine[ i]) && abLine[i] != '/' ? abLine[i] : '.');213 for (; i < cbLine; i++)212 isprint(abLine[j]) && abLine[j] != '/' ? abLine[j] : '.'); 213 for (; j < cbLine; j++) 214 214 fprintf(pFileOut, " "); 215 215 fprintf(pFileOut, " */"); … … 233 233 "%sconst unsigned%s g_cb%s = sizeof(g_ab%s);\n" 234 234 "/* end of file */\n", 235 fExport ? "DECLEXPORT(" : "", fExport ? ")" : "", argv[i ], argv[i]);235 fExport ? "DECLEXPORT(" : "", fExport ? ")" : "", argv[iArg], argv[iArg]); 236 236 237 237 /* flush output and check for error. */ … … 248 248 fclose(pFileIn); 249 249 if (rc) 250 remove(argv[i +2]);250 remove(argv[iArg+2]); 251 251 252 252 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.