Main Page | Modules | Data Structures | File List | Data Fields | Globals | Related Pages

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 int parseBuildInstallClean(Spec spec, rpmParseState parsePart)
00013 {
00014     int nextPart, rc;
00015     StringBuf *sbp = NULL;
00016     const char *name = NULL;
00017 
00018     /*@-branchstate@*/
00019     if (parsePart == PART_BUILD) {
00020         sbp = &(spec->build);
00021         name = "%build";
00022     } else if (parsePart == PART_INSTALL) {
00023         sbp = &(spec->install);
00024         name = "%install";
00025     } else if (parsePart == PART_CLEAN) {
00026         sbp = &(spec->clean);
00027         name = "%clean";
00028     }
00029     /*@=branchstate@*/
00030     
00031     if (*sbp != NULL) {
00032         rpmError(RPMERR_BADSPEC, _("line %d: second %s\n"),
00033                 spec->lineNum, name);
00034         return RPMERR_BADSPEC;
00035     }
00036     
00037     *sbp = newStringBuf();
00038 
00039     /* There are no options to %build, %install, or %clean */
00040     if ((rc = readLine(spec, STRIP_NOTHING)) > 0)
00041         return PART_NONE;
00042     if (rc)
00043         return rc;
00044     
00045     while (! (nextPart = isPart(spec->line))) {
00046         appendStringBuf(*sbp, spec->line);
00047         if ((rc = readLine(spec, STRIP_NOTHING)) > 0)
00048             return PART_NONE;
00049         if (rc)
00050             return rc;
00051     }
00052 
00053     return nextPart;
00054 }

Generated on Sat Oct 23 07:55:27 2004 for rpm by doxygen 1.3.6