From e6afdabda415104a478da84a09dcb78c73b80ce2 Mon Sep 17 00:00:00 2001 From: Francois Pons Date: Fri, 11 Apr 2003 16:06:52 +0000 Subject: brand new 0.82 version (flag_skip, excludedocs, fix NULL get_name) --- URPM.xs | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) (limited to 'URPM.xs') diff --git a/URPM.xs b/URPM.xs index 51a0c5d..3e56ecc 100644 --- a/URPM.xs +++ b/URPM.xs @@ -56,8 +56,9 @@ typedef rpmdb URPM__DB; typedef struct s_Transaction* URPM__Transaction; typedef struct s_Package* URPM__Package; -#define FLAG_ID 0x001fffffU -#define FLAG_RATE 0x00e00000U +#define FLAG_ID 0x000fffffU +#define FLAG_RATE 0x00700000U +#define FLAG_SKIP 0x00800000U #define FLAG_BASE 0x01000000U #define FLAG_FORCE 0x02000000U #define FLAG_INSTALLED 0x04000000U @@ -67,10 +68,10 @@ typedef struct s_Package* URPM__Package; #define FLAG_OBSOLETE 0x40000000U #define FLAG_NO_HEADER_FREE 0x80000000U -#define FLAG_ID_MAX 0x001ffffe -#define FLAG_ID_INVALID 0x001fffff +#define FLAG_ID_MAX 0x000ffffe +#define FLAG_ID_INVALID 0x000fffff -#define FLAG_RATE_POS 21 +#define FLAG_RATE_POS 20 #define FLAG_RATE_MAX 5 #define FLAG_RATE_INVALID 0 @@ -118,7 +119,7 @@ get_name(Header header, int_32 tag) { char *name; headerGetEntry(header, tag, &type, (void **) &name, &count); - return name; + return name ? name : ""; } static int @@ -1518,6 +1519,25 @@ Pkg_build_header(pkg, fileno) } else croak("unable to get rpmio handle on fileno %d", fileno); } else croak("no header available for package"); +int +Pkg_flag_skip(pkg) + URPM::Package pkg + CODE: + RETVAL = pkg->flag & FLAG_SKIP; + OUTPUT: + RETVAL + +int +Pkg_set_flag_skip(pkg, value=1) + URPM::Package pkg + int value + CODE: + RETVAL = pkg->flag & FLAG_SKIP; + if (value) pkg->flag |= FLAG_SKIP; + else pkg->flag &= ~FLAG_SKIP; + OUTPUT: + RETVAL + int Pkg_flag_base(pkg) URPM::Package pkg @@ -2061,6 +2081,8 @@ Trans_run(trans, data, ...) if (len == 4 && !memcmp(s, "test", 4)) { if (SvIV(ST(i+1))) transFlags |= RPMTRANS_FLAG_TEST; + } else if (len == 11 && !memcmp(s, "excludedocs", 11)) { + if (SvIV(ST(i+1))) transFlags |= RPMTRANS_FLAG_NODOCS; } else if (len == 5) { if (!memcmp(s, "force", 5)) { if (SvIV(ST(i+1))) probFilter |= (RPMPROB_FILTER_REPLACEPKG | -- cgit v1.2.1