break;
}
if (attr >= attr_type_int_begin && attr <= attr_type_int_end) {
- ret->u.num=strtol(value, NULL, 0);
+ if (value[0] == '0' && value[1] == 'x')
+ ret->u.num=strtoul(value, NULL, 0);
+ else
+ ret->u.num=strtol(value, NULL, 0);
if ((attr >= attr_type_rel_abs_begin) && (attr < attr_type_boolean_begin)) {
/* Absolute values are from -0x40000000 - 0x40000000, with 0x0 being 0 (who would have thought that?)
{type_ramp, AF_MOTORIZED_FAST},
{type_roundabout, AF_ALL},
{type_ferry, AF_ALL},
- {type_cycleway, AF_ALL},
+ {type_cycleway, AF_PBH},
{type_track_gravelled, AF_ALL},
+ {type_footway, AF_PBH},
};
struct street_data *
street_get_data (struct item *item)
{
- int count=0;
+ int count=0,*flags;
struct street_data *ret = NULL, *ret1;
struct attr flags_attr, maxspeed_attr;
const int step = 128;
ret->count=count;
if (item_attr_get(item, attr_flags, &flags_attr))
ret->flags=flags_attr.u.num;
- else
- ret->flags=0;
+ else {
+ flags=item_get_default_flags(item->type);
+ if (flags)
+ ret->flags=*flags;
+ else
+ ret->flags=0;
+ }
ret->maxspeed = -1;
if (ret->flags & AF_SPEED_LIMIT) {