build/parseBuildInstallClean.c

Go to the documentation of this file.
00001 
00005 #include "system.h"
00006 
00007 #include "rpmbuild.h"
00008 #include "debug.h"
00009 
00010 /*@access StringBuf @*/
00011 
00012 /*@-boundswrite@*/
00013 int parseBuildInstallClean(Spec spec, rpmParseState parsePart)
00014 {
00015     int nextPart, rc;
00016     StringBuf *sbp = NULL;
00017     const char *name = NULL;
00018 
00019     /*@-branchstate@*/
00020     if (parsePart == PART_BUILD) {
00021         sbp = &(spec->build);
00022         name = "%build";
00023     } else if (parsePart == PART_INSTALL) {
00024         sbp = &(spec->install);
00025         name = "%install";
00026     } else if (parsePart == PART_CHECK) {
00027         sbp = &(spec->check);
00028         name = "%check";
00029     } else if (parsePart == PART_CLEAN) {
00030         sbp = &(spec->clean);
00031         name = "%clean";
00032     }
00033     /*@=branchstate@*/
00034     
00035     if (*sbp != NULL) {
00036         rpmError(RPMERR_BADSPEC, _("line %d: second %s\n"),
00037                 spec->lineNum, name);
00038         return RPMERR_BADSPEC;
00039     }
00040     
00041     *sbp = newStringBuf();
00042 
00043     /* There are no options to %build, %install, %check, or %clean */
00044     if ((rc = readLine(spec, STRIP_NOTHING)) > 0)
00045         return PART_NONE;
00046     if (rc)
00047         return rc;
00048     
00049     while (! (nextPart = isPart(spec->line))) {
00050         appendStringBuf(*sbp, spec->line);
00051         if ((rc = readLine(spec, STRIP_NOTHING)) > 0)
00052             return PART_NONE;
00053         if (rc)
00054             return rc;
00055     }
00056 
00057     return nextPart;
00058 }
00059 /*@=boundswrite@*/

Generated on Fri Oct 12 08:44:53 2007 for rpm by  doxygen 1.5.2