rpm_constdata_t data, rpm_count_t size)
{
struct rpmtd_s td;
- rpmTagType type = rpmTagGetType(tag);
+ rpmTagType type = rpmTagGetTagType(tag);
+ rpmTagReturnType retype = rpmTagGetReturnType(tag);
headerPutFlags flags = HEADERPUT_APPEND;
int valid = 1;
/* Basic sanity checks: type must match and there must be data to put */
- if ((type & RPM_MASK_TYPE) != reqtype
+ if (type != reqtype
|| size < 1 || data == NULL || h == NULL) {
valid = 0;
}
* Non-array types can't be appended to. Binary types use size
* for data length, for other non-array types size must be 1.
*/
- if ((type & RPM_MASK_RETURN_TYPE) != RPM_ARRAY_RETURN_TYPE) {
+ if (retype != RPM_ARRAY_RETURN_TYPE) {
flags = HEADERPUT_DEFAULT;
- if ((type & RPM_MASK_TYPE) != RPM_BIN_TYPE && size != 1) {
+ if (type != RPM_BIN_TYPE && size != 1) {
valid = 0;
}
}
if (valid) {
rpmtdReset(&td);
td.tag = tag;
- td.type = type & RPM_MASK_TYPE;
+ td.type = type;
td.data = (void *) data;
td.count = size;
int headerPutString(Header h, rpmTag tag, const char *val)
{
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
const void *sptr = NULL;
/* string arrays expect char **, arrange that */
int rpmtdSetTag(rpmtd td, rpmTag tag)
{
assert(td != NULL);
- rpmTagType newtype = rpmTagGetType(tag);
+ rpmTagType newtype = rpmTagGetTagType(tag);
int rc = 0;
/*
goto exit;
if (td->data || td->count > 0) {
- if (rpmTagGetType(td->tag) != rpmTagGetType(tag)) {
+ if (rpmTagGetTagType(td->tag) != rpmTagGetTagType(tag)) {
goto exit;
}
}
td->tag = tag;
- td->type = newtype & RPM_MASK_TYPE;
+ td->type = newtype;
rc = 1;
exit:
int rpmtdFromUint8(rpmtd td, rpmTag tag, uint8_t *data, rpm_count_t count)
{
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
- rpmTagReturnType retype = rpmTagGetType(tag) & RPM_MASK_RETURN_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
+ rpmTagReturnType retype = rpmTagGetReturnType(tag);
if (count < 1)
return 0;
int rpmtdFromUint16(rpmtd td, rpmTag tag, uint16_t *data, rpm_count_t count)
{
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
- rpmTagReturnType retype = rpmTagGetType(tag) & RPM_MASK_RETURN_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
+ rpmTagReturnType retype = rpmTagGetReturnType(tag);
if (type != RPM_INT16_TYPE || count < 1)
return 0;
if (retype != RPM_ARRAY_RETURN_TYPE && count > 1)
int rpmtdFromUint32(rpmtd td, rpmTag tag, uint32_t *data, rpm_count_t count)
{
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
- rpmTagReturnType retype = rpmTagGetType(tag) & RPM_MASK_RETURN_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
+ rpmTagReturnType retype = rpmTagGetReturnType(tag);
if (type != RPM_INT32_TYPE || count < 1)
return 0;
if (retype != RPM_ARRAY_RETURN_TYPE && count > 1)
int rpmtdFromUint64(rpmtd td, rpmTag tag, uint64_t *data, rpm_count_t count)
{
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
- rpmTagReturnType retype = rpmTagGetType(tag) & RPM_MASK_RETURN_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
+ rpmTagReturnType retype = rpmTagGetReturnType(tag);
if (type != RPM_INT64_TYPE || count < 1)
return 0;
if (retype != RPM_ARRAY_RETURN_TYPE && count > 1)
int rpmtdFromString(rpmtd td, rpmTag tag, const char *data)
{
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
int rc = 0;
if (type == RPM_STRING_TYPE) {
int rpmtdFromStringArray(rpmtd td, rpmTag tag, const char **data, rpm_count_t count)
{
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
if (type != RPM_STRING_ARRAY_TYPE || count < 1)
return 0;
if (type == RPM_STRING_TYPE && count != 1)
int rpmtdFromArgv(rpmtd td, rpmTag tag, ARGV_t argv)
{
int count = argvCount(argv);
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
if (type != RPM_STRING_ARRAY_TYPE || count < 1)
return 0;
int rpmtdFromArgi(rpmtd td, rpmTag tag, ARGI_t argi)
{
int count = argiCount(argi);
- rpmTagType type = rpmTagGetType(tag) & RPM_MASK_TYPE;
- rpmTagReturnType retype = rpmTagGetType(tag) & RPM_MASK_RETURN_TYPE;
+ rpmTagType type = rpmTagGetTagType(tag);
+ rpmTagReturnType retype = rpmTagGetReturnType(tag);
if (type != RPM_INT32_TYPE || retype != RPM_ARRAY_RETURN_TYPE || count < 1)
return 0;
return rc;
}
-static int validData(rpmTag tag, rpmTagType type, PyObject *value)
+static int validData(rpmTag tag, rpmTagType type, rpmTagReturnType retype, PyObject *value)
{
rpmTagClass class = rpmTagGetClass(tag);
- rpmTagReturnType retype = (type & RPM_MASK_RETURN_TYPE);
int valid = 1;
if (retype == RPM_SCALAR_RETURN_TYPE) {
{
int rc = 0;
- switch ((type & RPM_MASK_TYPE)) {
+ switch (type) {
case RPM_I18NSTRING_TYPE: /* XXX this needs to be handled separately */
case RPM_STRING_TYPE:
case RPM_STRING_ARRAY_TYPE: {
static int hdrPutTag(Header h, rpmTag tag, PyObject *value)
{
- rpmTagType type = rpmTagGetType(tag);
- rpmTagReturnType retype = (type & RPM_MASK_RETURN_TYPE);
+ rpmTagType type = rpmTagGetTagType(tag);
+ rpmTagReturnType retype = rpmTagGetReturnType(tag);
int rc = 0;
/* XXX this isn't really right (i18n strings etc) but for now ... */
}
/* validate all data before trying to insert */
- if (!validData(tag, type, value)) {
+ if (!validData(tag, type, retype, value)) {
PyErr_SetString(PyExc_TypeError, "invalid type for tag");
return 0;
}