Changeset 3935
- Timestamp:
- 01/23/08 13:34:44 (5 years ago)
- File:
-
- 1 edited
-
trunk/src/target/opkg/pkg_parse.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/target/opkg/pkg_parse.c
r3880 r3935 242 242 for (lines = *raw; *lines; lines++) { 243 243 /* fprintf(stderr, "PARSING %s\n", *lines);*/ 244 if(isGenericFieldType("Package:", *lines)) 245 pkg->name = parseGenericFieldType("Package", *lines); 246 else if(isGenericFieldType("Architecture:", *lines)) 247 pkg->architecture = parseGenericFieldType("Architecture", *lines); 248 else if(isGenericFieldType("Filename:", *lines)) 249 pkg->filename = parseGenericFieldType("Filename", *lines); 250 else if(isGenericFieldType("Section:", *lines)) 251 pkg->section = parseGenericFieldType("Section", *lines); 252 else if(isGenericFieldType("MD5sum:", *lines)) 253 pkg->md5sum = parseGenericFieldType("MD5sum", *lines); 254 /* The old opkg wrote out status files with the wrong case for MD5sum, 255 let's parse it either way */ 256 else if(isGenericFieldType("MD5Sum:", *lines)) 257 pkg->md5sum = parseGenericFieldType("MD5Sum", *lines); 258 else if(isGenericFieldType("Size:", *lines)) 259 pkg->size = parseGenericFieldType("Size", *lines); 260 else if(isGenericFieldType("Source:", *lines)) 261 pkg->source = parseGenericFieldType("Source", *lines); 262 else if(isGenericFieldType("Installed-Size:", *lines)) 263 pkg->installed_size = parseGenericFieldType("Installed-Size", *lines); 264 else if(isGenericFieldType("Installed-Time:", *lines)) { 265 char *time_str = parseGenericFieldType("Installed-Time", *lines); 266 pkg->installed_time = strtoul(time_str, NULL, 0); 267 } else if(isGenericFieldType("Priority:", *lines)) 268 pkg->priority = parseGenericFieldType("Priority", *lines); 269 else if(isGenericFieldType("Essential:", *lines)) { 270 char *essential_value; 271 essential_value = parseGenericFieldType("Essential", *lines); 272 if (strcmp(essential_value, "yes") == 0) { 273 pkg->essential = 1; 274 } 275 free(essential_value); 276 } 277 else if(isGenericFieldType("Status", *lines)) 278 parseStatus(pkg, *lines); 279 else if(isGenericFieldType("Version", *lines)) 280 parseVersion(pkg, *lines); 281 else if(isGenericFieldType("Maintainer", *lines)) 282 pkg->maintainer = parseGenericFieldType("Maintainer", *lines); 283 else if(isGenericFieldType("Conffiles", *lines)){ 284 parseConffiles(pkg, *lines); 285 reading_conffiles = 1; 286 } 287 else if(isGenericFieldType("Description", *lines)) { 288 pkg->description = parseGenericFieldType("Description", *lines); 289 reading_conffiles = 0; 290 reading_description = 1; 291 } 292 293 else if(isGenericFieldType("Provides", *lines)){ 244 switch (**lines) { 245 case 'P': 246 if(isGenericFieldType("Package:", *lines)) 247 pkg->name = parseGenericFieldType("Package", *lines); 248 else if(isGenericFieldType("Priority:", *lines)) 249 pkg->priority = parseGenericFieldType("Priority", *lines); 250 else if(isGenericFieldType("Provides", *lines)){ 294 251 /* Here we add the internal_use to align the off by one problem between provides_str and provides */ 295 provide = (char * ) malloc(strlen(*lines)+ 35 ); /* Preparing the space for the new opkg_internal_use_only */296 if ( alterProvidesLine(*lines,provide) ){297 return EINVAL;298 }299 pkg->provides_str = parseDependsString( provide, &pkg->provides_count);252 provide = (char * ) malloc(strlen(*lines)+ 35 ); /* Preparing the space for the new opkg_internal_use_only */ 253 if ( alterProvidesLine(*lines,provide) ){ 254 return EINVAL; 255 } 256 pkg->provides_str = parseDependsString( provide, &pkg->provides_count); 300 257 /* Let's try to hack a bit here. 301 258 The idea is that if a package has no Provides, we would add one generic, to permit the check of dependencies 302 259 in alot of other places. We will remove it before writing down the status database */ 303 pkg_false_provides=0; 304 free(provide); 305 } 306 307 else if(isGenericFieldType("Depends", *lines)) 308 pkg->depends_str = parseDependsString(*lines, &pkg->depends_count); 309 else if(isGenericFieldType("Pre-Depends", *lines)) 310 pkg->pre_depends_str = parseDependsString(*lines, &pkg->pre_depends_count); 311 else if(isGenericFieldType("Recommends", *lines)) 312 pkg->recommends_str = parseDependsString(*lines, &pkg->recommends_count); 313 else if(isGenericFieldType("Suggests", *lines)) 314 pkg->suggests_str = parseDependsString(*lines, &pkg->suggests_count); 315 /* Abhaya: support for conflicts */ 316 else if(isGenericFieldType("Conflicts", *lines)) 317 pkg->conflicts_str = parseDependsString(*lines, &pkg->conflicts_count); 318 else if(isGenericFieldType("Replaces", *lines)) 319 pkg->replaces_str = parseDependsString(*lines, &pkg->replaces_count); 320 else if(line_is_blank(*lines)) { 321 lines++; 322 break; 323 } 324 else if(**lines == ' '){ 260 pkg_false_provides=0; 261 free(provide); 262 } 263 else if(isGenericFieldType("Pre-Depends", *lines)) 264 pkg->pre_depends_str = parseDependsString(*lines, &pkg->pre_depends_count); 265 break; 266 267 case 'A': 268 if(isGenericFieldType("Architecture:", *lines)) 269 pkg->architecture = parseGenericFieldType("Architecture", *lines); 270 break; 271 272 case 'F': 273 if(isGenericFieldType("Filename:", *lines)) 274 pkg->filename = parseGenericFieldType("Filename", *lines); 275 break; 276 277 case 'S': 278 if(isGenericFieldType("Section:", *lines)) 279 pkg->section = parseGenericFieldType("Section", *lines); 280 else if(isGenericFieldType("Size:", *lines)) 281 pkg->size = parseGenericFieldType("Size", *lines); 282 else if(isGenericFieldType("Source:", *lines)) 283 pkg->source = parseGenericFieldType("Source", *lines); 284 else if(isGenericFieldType("Status", *lines)) 285 parseStatus(pkg, *lines); 286 else if(isGenericFieldType("Suggests", *lines)) 287 pkg->suggests_str = parseDependsString(*lines, &pkg->suggests_count); 288 break; 289 290 case 'M': 291 if(isGenericFieldType("MD5sum:", *lines)) 292 pkg->md5sum = parseGenericFieldType("MD5sum", *lines); 293 /* The old opkg wrote out status files with the wrong case for MD5sum, 294 let's parse it either way */ 295 else if(isGenericFieldType("MD5Sum:", *lines)) 296 pkg->md5sum = parseGenericFieldType("MD5Sum", *lines); 297 else if(isGenericFieldType("Maintainer", *lines)) 298 pkg->maintainer = parseGenericFieldType("Maintainer", *lines); 299 break; 300 301 case 'I': 302 if(isGenericFieldType("Installed-Size:", *lines)) 303 pkg->installed_size = parseGenericFieldType("Installed-Size", *lines); 304 else if(isGenericFieldType("Installed-Time:", *lines)) { 305 char *time_str = parseGenericFieldType("Installed-Time", *lines); 306 pkg->installed_time = strtoul(time_str, NULL, 0); 307 } 308 break; 309 310 case 'E': 311 if(isGenericFieldType("Essential:", *lines)) { 312 char *essential_value; 313 essential_value = parseGenericFieldType("Essential", *lines); 314 if (strcmp(essential_value, "yes") == 0) { 315 pkg->essential = 1; 316 } 317 free(essential_value); 318 } 319 break; 320 321 case 'V': 322 if(isGenericFieldType("Version", *lines)) 323 parseVersion(pkg, *lines); 324 break; 325 326 case 'C': 327 if(isGenericFieldType("Conffiles", *lines)){ 328 parseConffiles(pkg, *lines); 329 reading_conffiles = 1; 330 } 331 else if(isGenericFieldType("Conflicts", *lines)) 332 pkg->conflicts_str = parseDependsString(*lines, &pkg->conflicts_count); 333 break; 334 335 case 'D': 336 if(isGenericFieldType("Description", *lines)) { 337 pkg->description = parseGenericFieldType("Description", *lines); 338 reading_conffiles = 0; 339 reading_description = 1; 340 } 341 else if(isGenericFieldType("Depends", *lines)) 342 pkg->depends_str = parseDependsString(*lines, &pkg->depends_count); 343 break; 344 345 case 'R': 346 if(isGenericFieldType("Recommends", *lines)) 347 pkg->recommends_str = parseDependsString(*lines, &pkg->recommends_count); 348 else if(isGenericFieldType("Replaces", *lines)) 349 pkg->replaces_str = parseDependsString(*lines, &pkg->replaces_count); 350 351 break; 352 353 case ' ': 325 354 if(reading_description) { 326 355 /* we already know it's not blank, so the rest of description */ … … 333 362 else if(reading_conffiles) 334 363 parseConffiles(pkg, *lines); 364 365 break; 366 367 default: 368 if(line_is_blank(*lines)) { 369 lines++; 370 goto out; 371 } 335 372 } 336 373 } 374 out:; 375 337 376 *raw = lines; 338 377 /* If the ipk has not a Provides line, we insert our false line */
Note: See TracChangeset
for help on using the changeset viewer.
