uint8_t *start = odhcp6c_get_state(state, &len);
for (struct odhcp6c_entry *c = (struct odhcp6c_entry*)start;
(uint8_t*)c < &start[len] && &c->auxtarget[c->auxlen] <= &start[len];
- c = (struct odhcp6c_entry*)(&c->auxtarget[c->auxlen])) {
+ ) {
if (c->t1 < elapsed)
c->t1 = 0;
else if (c->t1 != UINT32_MAX)
else if (c->valid != UINT32_MAX)
c->valid -= elapsed;
- if (!c->valid)
+ if (!c->valid) {
odhcp6c_remove_state(state, ((uint8_t*)c) - start, sizeof(*c) + c->auxlen);
+ start = odhcp6c_get_state(state, &len);
+ } else {
+ c = (struct odhcp6c_entry*)(&c->auxtarget[c->auxlen]);
+ }
}
}
buf_len += strlen(&buf[buf_len]);
buf[buf_len++] = ' ';
}
- buf[buf_len - 1] = '\0';
+ if (buf[buf_len - 1] == ' ')
+ buf_len--;
+ buf[buf_len] = '\0';
putenv(buf);
}
buf_len += strlen(&buf[buf_len]);
buf[buf_len++] = ' ';
}
- buf[buf_len - 1] = '\0';
+ if (buf[buf_len - 1] == ' ')
+ buf_len--;
+ buf[buf_len] = '\0';
putenv(buf);
}
buf[buf_len++] = ' ';
}
- buf[buf_len - 1] = '\0';
+ if (buf[buf_len - 1] == ' ')
+ buf_len--;
+ buf[buf_len] = '\0';
putenv(buf);
}
*c++ = ' ';
}
- c[-1] = '\0';
+ if (c[-1] == ' ')
+ c--;
+ *c = '\0';
putenv(buf);
}