rpm  5.4.15
Macros | Functions
parseChangelog.c File Reference

Parse changelog section from spec file. More...

#include "system.h"
#include <rpmio.h>
#include <rpmiotypes.h>
#include <rpmlog.h>
#include "rpmbuild.h"
#include "debug.h"
Include dependency graph for parseChangelog.c:

Go to the source code of this file.

Macros

#define mySKIPSPACE(s)   { while (*(s) && isspace(*(s))) (s)++; }
 
#define mySKIPNONSPACE(s)   { while (*(s) && !isspace(*(s))) (s)++; }
 
#define CVS_RCSID   "$""Log: "
 
#define CVS_REVISION   "Revision "
 

Functions

void addChangelogEntry (Header h, time_t time, const char *name, const char *text)
 Add changelog entry to header. More...
 
static int dateToTimet (const char *datestr, time_t *secs)
 Parse date string to seconds. More...
 
time_t get_date (const char *p, void *now)
 
static rpmRC addChangelog (Header h, rpmiob iob)
 Add changelog section to header. More...
 
int parseChangelog (Spec spec)
 Parse %changelog section of a spec file. More...
 

Detailed Description

Parse changelog section from spec file.

Definition in file parseChangelog.c.

Macro Definition Documentation

#define CVS_RCSID   "$""Log: "

Definition at line 17 of file parseChangelog.c.

Referenced by addChangelog().

#define CVS_REVISION   "Revision "

Definition at line 18 of file parseChangelog.c.

Referenced by addChangelog().

#define mySKIPNONSPACE (   s)    { while (*(s) && !isspace(*(s))) (s)++; }

Definition at line 15 of file parseChangelog.c.

Referenced by addChangelog(), and dateToTimet().

#define mySKIPSPACE (   s)    { while (*(s) && isspace(*(s))) (s)++; }

Definition at line 14 of file parseChangelog.c.

Referenced by addChangelog(), and dateToTimet().

Function Documentation

static rpmRC addChangelog ( Header  h,
rpmiob  iob 
)
static

Add changelog section to header.

Parameters
hheader
iobchangelog strings
Returns
RPMRC_OK on success

Definition at line 138 of file parseChangelog.c.

References _, _free(), addChangelogEntry(), CVS_RCSID, CVS_REVISION, dateToTimet(), get_date(), i, mySKIPNONSPACE, mySKIPSPACE, name, out, rpmExpand(), rpmExpandNumeric(), rpmiobStr(), rpmlog(), RPMLOG_ERR, RPMLOG_WARNING, RPMRC_FAIL, time, and xisspace().

Referenced by parseChangelog().

void addChangelogEntry ( Header  h,
time_t  time,
const char *  name,
const char *  text 
)

Add changelog entry to header.

Todo:
addChangelogEntry should be static.
Parameters
hheader
timetime of change
nameperson who made the change
textdescription of change

Definition at line 20 of file parseChangelog.c.

References alloca(), _HE_s::append, rpmDataType_u::argv, _HE_s::c, headerPut(), name, _HE_s::p, RPM_STRING_ARRAY_TYPE, RPM_UINT32_TYPE, RPMTAG_CHANGELOGNAME, RPMTAG_CHANGELOGTEXT, RPMTAG_CHANGELOGTIME, _HE_s::t, _HE_s::tag, and rpmDataType_u::ui32p.

Referenced by addChangelog().

static int dateToTimet ( const char *  datestr,
time_t *  secs 
)
static

Parse date string to seconds.

Parameters
datestrdate string (e.g. 'Wed Jan 1 1997')
Return values
secssecs since the unix epoch
Returns
0 on success, -1 on error

Definition at line 57 of file parseChangelog.c.

References alloca(), mySKIPNONSPACE, mySKIPSPACE, and secs.

Referenced by addChangelog().

time_t get_date ( const char *  p,
void *  now 
)

Referenced by addChangelog().

int parseChangelog ( Spec  spec)

Parse %changelog section of a spec file.

Parameters
specspec file control structure
Returns
>= 0 next rpmParseState, < 0 on error

Definition at line 302 of file parseChangelog.c.

References _free(), addChangelog(), Spec_s::clean, Package_s::header, isPart(), Spec_s::line, Spec_s::packages, PART_CLEAN, PART_NONE, readLine(), rpmiobAppend(), rpmiobFree(), rpmiobNew(), RPMRC_OK, STRIP_COMMENTS, STRIP_NOEXPAND, xstrdup(), and xstrtolocale().

Referenced by parseSpec().