# build/parsePrep.c File Reference

Parse prep section from spec file. More...

`#include "system.h"`
`#include <rpmio_internal.h>`
`#include <rpmbuild.h>`
`#include "debug.h"`

Go to the source code of this file.

## Functions

static int | checkOwners (const char *urlfn)
| Check that file owner and group are known.
static char * | doPatch (Spec spec, int c, int strip, const char *db, int reverse, int removeEmpties)
| Expand patchN macro into prep scriptlet.
static const char * | doUntar (Spec spec, int c, int quietly)
| Expand setup macro into prep scriptlet.
static int | doSetupMacro (Spec spec, char *line)
| Parse setup macro.
static int | doPatchMacro (Spec spec, char *line)
| Parse patch line.
int | parsePrep (Spec spec)
| Parse %prep section of a spec file.

## Variables

static int | leaveDirs
static int | skipDefaultAction
static int | createDir
static int | quietly
static const char * | dirName = NULL
static struct poptOption | optionsTable []

## Detailed Description

Parse prep section from spec file.

Definition in file parsePrep.c.

## Function Documentation

static int checkOwners | ( | const char * | urlfn | ) | `[static]`

Check that file owner and group are known.

Parameters:

  | urlfn | file url

Returns:
  0 on success

Definition at line 38 of file parsePrep.c.

References _, errno, getGname(), getUname(), Lstat(), RPMERR_BADSPEC, rpmError, and strerror().

Referenced by doPatch(), and doUntar().

static char* doPatch | ( | Spec | spec,
|  | int | c,
|  | int | strip,
|  | const char * | db,
|  | int | reverse,
|  | int | removeEmpties |
| ) |  |  | `[static]`

Expand patchN macro into prep scriptlet.

Parameters:

  | spec | build info
  | c | patch index
  | strip | patch level (i.e. patch -p argument)
  | db | saved file suffix (i.e. patch --suffix argument)
  | reverse | include -R?
  | removeEmpties | include -E?

Returns:
  expanded patch macro (NULL on error)

Definition at line 67 of file parsePrep.c.

References _, _free(), checkOwners(), COMPRESSED_BZIP2, COMPRESSED_NOT, Source::flags, SpecStruct::force, isCompressed(), Source::next, Source::num, RPMBUILD_ISPATCH, RPMERR_BADSPEC, rpmError, rpmGetPath(), Source::source, SpecStruct::sources, URL_IS_DASH, URL_IS_FTP, URL_IS_HTTP, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().

Referenced by doPatchMacro().

static int doPatchMacro | ( | Spec | spec,
|  | char * | line |
| ) |  |  | `[static]`

Parse patch line.

Parameters:

  | spec | build info
  | line | current line from spec file

Returns:
  0 on success

Definition at line 435 of file parsePrep.c.

References _, appendLineStringBuf, doPatch(), SpecStruct::line, SpecStruct::lineNum, parseNum(), SpecStruct::prep, RPMERR_BADSPEC, and rpmError.

Referenced by parsePrep().

static int doSetupMacro | ( | Spec | spec,
|  | char * | line |
| ) |  |  | `[static]`

Parse setup macro.

Todo:
  FIXME: Option -q broken when not immediately after setup.

Parameters:

  | spec | build info
  | line | current line from spec file

Returns:
  0 on success

Definition at line 279 of file parsePrep.c.

References _, _free(), addMacro(), appendLineStringBuf, appendStringBuf, SpecStruct::buildSubdir, createDir, dirName, doUntar(), freeStringBuf(), getStringBuf(), PackageStruct::header, headerNVR(), leaveDirs, SpecStruct::lineNum, SpecStruct::macros, MKDIR_P, name, newStringBuf(), optionsTable, SpecStruct::packages, parseNum(), POPT_BADOPTION_NOALIAS, poptBadOption(), poptFreeContext(), poptGetContext(), poptGetNextOpt(), poptGetOptArg(), poptParseArgvString(), poptStrerror(), SpecStruct::prep, quietly, RMIL_SPEC, SpecStruct::rootURL, RPMERR_BADSPEC, rpmError, rpmExpand(), rpmGenPath(), skipDefaultAction, urlPath(), and xstrdup().

Referenced by parsePrep().

static const char* doUntar | ( | Spec | spec,
|  | int | c,
|  | int | quietly |
| ) |  |  | `[static]`

Expand setup macro into prep scriptlet.

Parameters:

  | spec | build info
  | c | source index
  | quietly | should -vv be omitted from tar?

Returns:
  expanded setup macro (NULL on error)

Definition at line 161 of file parsePrep.c.

References _, _free(), checkOwners(), COMPRESSED_BZIP2, COMPRESSED_NOT, COMPRESSED_OTHER, COMPRESSED_ZIP, errno, Source::flags, SpecStruct::force, ftpStrerror(), Source::fullSource, isCompressed(), Lstat(), Source::next, Source::num, RPMBUILD_ISSOURCE, RPMERR_BADFILENAME, RPMERR_BADSPEC, rpmError, rpmGetPath(), rpmIsVerbose, RPMTAG_NOSOURCE, Source::source, SpecStruct::sources, stpcpy(), URL_IS_DASH, URL_IS_FTP, URL_IS_HTTP, URL_IS_PATH, URL_IS_UNKNOWN, urlGetFile(), and urlPath().

Referenced by doSetupMacro().

## Variable Documentation

int createDir `[static]`

Definition at line 18 of file parsePrep.c.

Referenced by doSetupMacro().

const char* dirName = NULL`[static]`

Definition at line 20 of file parsePrep.c.

Referenced by alAllFileSatisfiesDepend(), doSetupMacro(), rpmdbFindByFile(), and rpmGetFilesystemUsage().

int leaveDirs `[static]`

Definition at line 16 of file parsePrep.c.

Referenced by doSetupMacro().

struct poptOption optionsTable[]`[static]`

Initial value:

     {
                { NULL, 'a', POPT_ARG_STRING, NULL, 'a',    NULL, NULL},
                { NULL, 'b', POPT_ARG_STRING, NULL, 'b',    NULL, NULL},
                { NULL, 'c', 0, &createDir, 0,              NULL, NULL},
                { NULL, 'D', 0, &leaveDirs, 0,              NULL, NULL},
                { NULL, 'n', POPT_ARG_STRING, &dirName, 0,  NULL, NULL},
                { NULL, 'T', 0, &skipDefaultAction, 0,      NULL, NULL},
                { NULL, 'q', 0, &quietly, 0,                NULL, NULL},
                { 0, 0, 0, 0, 0,    NULL, NULL}
        }

Definition at line 22 of file parsePrep.c.

int quietly `[static]`

Definition at line 18 of file parsePrep.c.

Referenced by doSetupMacro().

int skipDefaultAction `[static]`

Definition at line 16 of file parsePrep.c.

Referenced by doSetupMacro().